




























































































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Guía básica de Windows PowerShell™
Tipo: Apuntes
1 / 122
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!





























































































Microsoft Corporation
Publicación: septiembre de 2006
Windows PowerShell™ es un nuevo shell de línea de comandos de Windows que se ha diseñado expresamente para los administradores de sistemas. El shell incluye un símbolo del sistema interactivo y un entorno de scripting que se pueden utilizar de forma independiente o conjunta.
En este documento se describen los conceptos básicos y las funciones de Windows PowerShell, y se sugieren formas en que se puede usar Windows PowerShell para la administración de sistemas.
Windows PowerShell es un shell de línea de comandos y un entorno de scripting que ofrece la eficacia de .NET Framework a los usuarios de la línea de comandos y a los creadores de scripts. Windows PowerShell presenta diversos conceptos nuevos y eficaces que permiten ampliar los conocimientos adquiridos y los scripts creados en los entornos del símbolo del sistema de Windows y Windows Script Host.
La Guía básica de Windows PowerShell está destinada a los profesionales de tecnologías de la información (TI), programadores y usuarios avanzados que carezcan de conocimientos sobre Windows PowerShell. Aunque los conocimientos sobre creación de scripts y WMI ayudan, no se presuponen ni son necesarios para entender este documento.
Windows PowerShell se ha diseñado para mejorar el entorno de línea de comandos y scripting mediante la eliminación de antiguos problemas y la incorporación de nuevas funciones.
Windows PowerShell permite descubrir fácilmente sus funciones. Por ejemplo, para obtener una lista de los cmdlets que permiten ver y cambiar servicios de Windows, escriba:
get-command *-service
Después de descubrir qué cmdlet realiza una tarea, puede obtener más información acerca del cmdlet en cuestión mediante el cmdlet Get-Help. Por ejemplo, para mostrar la Ayuda acerca del cmdlet Get-Service, escriba:
get-help get-service
Para entender totalmente el resultado de este cmdlet, canalice dicho resultado al cmdlet Get-Member. Por ejemplo, el siguiente comando muestra información acerca de los miembros del objeto que da como resultado el cmdlet Get-Service:
get-service | get-member
La administración de sistemas puede ser una tarea compleja, y herramientas con una interfaz común ayudan a controlar esta complejidad inherente. Por desgracia, ni las herramientas de línea de comandos ni los objetos COM que se pueden utilizar en scripts destacan por su coherencia.
La coherencia de Windows PowerShell constituye uno de sus valores principales. Por ejemplo, si aprende a utilizar el cmdlet Sort-Object, podrá usar estos conocimientos para ordenar el resultado de cualquier cmdlet. No es necesario que aprenda las distintas rutinas de ordenación de cada cmdlet.
Además, los programadores de cmdlets no tienen que diseñar funciones de ordenación para sus cmdlets. Windows PowerShell les proporciona un marco de trabajo con las funciones básicas y les obliga a ser coherentes en muchos aspectos de la interfaz. Este marco de trabajo elimina algunas de las opciones que suelen dejarse en manos del programador pero, a cambio, la programación de cmdlets eficaces y fáciles de usar se vuelve una tarea mucho más sencilla.
Windows PowerShell combina un entorno interactivo con un entorno de scripting que ofrece acceso a herramientas de línea de comandos y objetos COM, y permite aprovechar la eficacia de la biblioteca de clases de .NET Framework (FCL).
Este entorno combinado mejora el símbolo del sistema de Windows, que proporciona un entorno interactivo con varias herramientas de línea de comandos. También mejora los scripts de Windows Script Host (WSH), que permiten utilizar varias herramientas de línea de comandos y objetos de automatización COM, pero que no proporcionan un entorno interactivo.
Al combinar el acceso a todas estas características, Windows PowerShell amplía la capacidad del usuario interactivo y del creador de scripts, además de facilitar la administración de sistemas.
Aunque la interacción con Windows PowerShell se realiza mediante comandos de texto, Windows PowerShell está basado en objetos, no en texto. El resultado de un comando es un objeto. Puede enviar el objeto de salida como entrada a otro comando. En consecuencia, Windows PowerShell proporciona una interfaz familiar a usuarios con experiencia en otros shells, al tiempo que introduce un nuevo y eficaz paradigma
Por ejemplo:
PowerShellSetup_x86_fre.exe /quiet
En versiones de 32 bits de Windows, Windows PowerShell se instala, de manera predeterminada, en el directorio %SystemRoot%\System32\WindowsPowerShell\v1.0. En versiones de 64 bits de Windows, se instala una versión de 32 bits de Windows PowerShell en el directorio %SystemRoot%\SystemWow64\WindowsPowerShell\v1. y una versión de 64 bits de Windows PowerShell en el directorio %SystemRoot%\System32\WindowsPowerShell\v1.0.
Para iniciar Windows PowerShell desde el menú Inicio, haga clic en Inicio , Todos los programas , Windows PowerShell 1.0 y, a continuación, en el icono Windows PowerShell.
Para iniciar Windows PowerShell desde el cuadro Ejecutar, haga clic en Inicio , Ejecutar , escriba powershell y, a continuación, haga clic en Aceptar.
Para iniciar Windows PowerShell desde una ventana del símbolo del sistema (cmd.exe), escriba powershell. Dado que Windows PowerShell se ejecuta en una sesión de consola, puede emplear esta misma técnica para ejecutarlo en una sesión de SSH o Telnet remota. Para volver a la sesión del símbolo del sistema, escriba exit.
Las interfaces gráficas emplean algunos conceptos básicos que conocen bien la mayoría de los usuarios, y que les ayudan a realizar las tareas. Los sistemas operativos ofrecen a los usuarios una representación gráfica de los elementos que se pueden explorar, normalmente con menús desplegables para el acceso a funciones específicas y menús contextuales para el acceso a funciones que dependen del contexto.
Una interfaz de línea de comandos (CLI), como Windows PowerShell, debe aplicar un enfoque distinto para exponer la información, ya que carece de menús o sistemas gráficos que sirvan de ayuda al usuario. Es necesario que el usuario conozca los nombres de los comandos para poder utilizarlos. Aunque puede escribir comandos complejos equivalentes a las funciones de un entorno GUI, es necesario que se familiarice con los comandos y los parámetros más usados.
La mayoría de las CLI carecen de patrones que puedan ayudar al usuario en el aprendizaje de la interfaz. Dado que las CLI fueron los primeros shells de sistemas
operativos, muchos nombres de comandos y de parámetros se seleccionaron de forma arbitraria. Generalmente se eligieron nombres concisos pero poco intuitivos. Aunque la mayoría de las CLI integran los estándares de diseño de comandos y sistemas de Ayuda, normalmente se han diseñado para ser compatibles con los comandos anteriores, por lo que los comandos siguen estando basados en decisiones que se tomaron hace décadas.
Windows PowerShell se ha diseñado para aprovechar los conocimientos históricos sobre CLI de los usuarios. En este capítulo, hablaremos sobre algunas herramientas y conceptos básicos que le ayudarán a aprender a utilizar Windows PowerShell rápidamente. Entre ellos, se incluyen los siguientes:
Uso de Get-Command Uso de Cmd.exe y comandos UNIX Uso de comandos externos Completar con tabulaciones Uso de Get-Help
El diseño de Windows PowerShell integra conceptos de muchos entornos distintos. Algunos de ellos son familiares para los usuarios con experiencia en shells o entornos de programación específicos, pero muy pocos los conocen todos. Examinar detenidamente estos conceptos ofrece una útil descripción general del shell.
A diferencia de los comandos tradicionales de una interfaz de línea de comandos, los cmdlets de Windows PowerShell están diseñados para usar objetos: información estructurada que es más que una simple cadena de caracteres que se muestra en pantalla. El resultado de los comandos contiene siempre información adicional que puede usar si es necesario. Trataremos este tema en profundidad en este documento.
Si en el pasado utilizó herramientas de procesamiento de textos para procesar los datos de línea de comandos e intenta usarlas en Windows PowerShell, observará que se comportan de forma distinta. En la mayoría de los casos, no es necesario utilizar herramientas de procesamiento de textos para extraer información específica. Puede tener acceso directamente a partes de los datos mediante comandos estándar para la manipulación de objetos de Windows PowerShell.
que la herramienta pase por alto lo que ha escrito y comience a realizar una tarea automáticamente.
Cuando escriba un comando en Windows PowerShell, todo lo que escriba lo analizará y preprocesará Windows PowerShell automáticamente. Si usa el parámetro -? con un cmdlet de Windows PowerShell, siempre significará "muéstrame la Ayuda de este comando". Los programadores de cmdlets no tienen que analizar el comando; sólo tienen que proporcionar el texto de la Ayuda.
Es importante entender que las características de Ayuda de Windows PowerShell están disponibles incluso cuando se ejecutan herramientas tradicionales de línea de comandos en Windows PowerShell. Windows PowerShell procesa los parámetros y analiza los resultados para las herramientas externas.
Nota: Si ejecuta una aplicación gráfica en Windows PowerShell, se abrirá la ventana de la aplicación. Windows PowerShell interviene únicamente al procesar la entrada de línea de comandos proporcionada o la salida de la aplicación que se devuelve a la ventana de la consola; no interviene en el funcionamiento interno de la aplicación.
Windows PowerShell incluye palabras clave y funciones de sintaxis muy parecidas a las que se usan en el lenguaje de programación C#, ya que también se basa en .NET Framework. Aprender a utilizar Windows PowerShell facilita mucho el aprendizaje de C#, si está interesado en este lenguaje.
Si no es un programador de C#, esta similitud no es importante. No obstante, si ya está familiarizado con C#, las similitudes pueden facilitar enormemente el aprendizaje de Windows PowerShell.
Para la mayoría de las interfaces de línea de comandos, hay que dedicar mucho tiempo a aprender los nombres de comandos y parámetros. El problema es que hay muy pocos patrones que seguir, por lo que la única manera es memorizar cada comando y cada parámetro que se vaya a utilizar con frecuencia.
Cuando se trabaja con un comando o parámetro nuevo, no se puede usar normalmente lo que ya se sabe; es necesario buscar y aprender un nombre nuevo. Si observa cómo
aumentan de tamaño las interfaces, desde un pequeño conjunto de herramientas hasta funciones, con adiciones progresivas, es fácil entender por qué la estructura no está normalizada. En lo que respecta a los nombres de comandos en concreto, esto puede parecer lógico puesto que cada comando es una herramienta independiente, pero hay una manera mejor de tratar los nombres de comandos.
La mayoría de los comandos se crean para administrar elementos del sistema operativo o aplicaciones, como servicios o procesos. Los comandos tienen nombres diversos, que pueden ajustarse o no a un grupo. Por ejemplo, en sistemas Windows, se pueden utilizar los comandos net start y net stop para iniciar o detener un servicio. También hay otra herramienta de control de servicios más generalizada para Windows con un nombre totalmente distinto, sc , que no encaja en el patrón de nomenclatura de los comandos de servicio net. Para la administración de procesos, Windows cuenta con el comando tasklist para enumerar procesos y con el comando taskkill para eliminar procesos.
Los comandos con parámetros tienen especificaciones irregulares para estos últimos. No se puede usar el comando net start para iniciar un servicio en un equipo remoto. El comando sc inicia un servicio en un equipo remoto pero, para especificar este último, es necesario escribir dos barras diagonales inversas como prefijo del nombre. Por ejemplo, para iniciar el servicio de cola de impresión en un equipo remoto llamado DC01, debe escribir sc \DC01 start spooler. Para obtener una lista de las tareas que se están ejecutando en DC01, deberá utilizar el parámetro /S (de "sistema") y proporcionar el nombre DC01 sin las barras diagonales inversas: tasklist /S DC.
Aunque hay importantes diferencias técnicas entre un servicio y un proceso, ambos son ejemplos de elementos fáciles de administrar en un equipo con un ciclo de vida bien definido. Quizá desee iniciar o detener un servicio o proceso, u obtener una lista de todos los servicios o procesos en ejecución actualmente. En otras palabras, aunque un servicio y un proceso son cosas distintas, las acciones que realizamos en un servicio o proceso son a menudo las mismas, conceptualmente hablando. Además, las elecciones que realicemos para personalizar una acción mediante parámetros pueden ser también conceptualmente parecidas.
Windows PowerShell aprovecha estas similitudes para reducir el número de nombres distintos que el usuario necesita conocer para entender y usar los cmdlets.
Windows PowerShell utiliza un sistema de nombres con la estructura "verbo-sustantivo": el nombre de cada cmdlet consta de un verbo estándar y un sustantivo concreto unidos por un guión. Los verbos de Windows PowerShell no siempre están en inglés, pero expresan acciones concretas en Windows PowerShell. Los sustantivos son muy parecidos a los de cualquier idioma, ya que describen tipos de objetos concretos
Un comando no es necesariamente un cmdlet simplemente porque tenga un esquema de nomenclatura “verbo-sustantivo”. Un ejemplo de un comando nativo de Windows PowerShell que no es un cmdlet, pero tiene un nombre con verbo y sustantivo, es el comando para borrar el contenido de una ventana de consola, Clear-Host. El comando Clear-Host es en realidad una función interna, como puede observar si ejecuta Get- Command respecto a este comando:
PS> Get-Command - Name Clear-Host
CommandType Name Definition
Function Clear-Host $spaceType = [System.Managem...
Como se ha indicado anteriormente, los nombres de los parámetros de los comandos utilizados en las interfaces tradicionales de línea de comandos no suelen ser coherentes. Algunos parámetros no tienen nombre. Si tienen nombre, suele ser una palabra abreviada o de un solo carácter que se pueden escribir rápidamente, pero que los usuarios nuevos no entienden fácilmente.
A diferencia de la mayoría de las interfaces tradicionales de línea de comandos, Windows PowerShell procesa los parámetros directamente y usa este acceso directo a los parámetros, junto con las directrices del programador, para normalizar los nombres de parámetros. Aunque esto no garantiza que todos los cmdlets se ajusten siempre a los estándares, sí lo fomenta.
Nota: Los nombres de parámetros se utilizan siempre con un guión (-) como prefijo, para que Windows PowerShell los identifique claramente como parámetros. En el ejemplo de Get-Command -Name Clear-Host , el nombre del parámetro es Name , pero se escribe como - Name. A continuación se describen algunas de las características generales de los usos y nombres de parámetros estándar.
Cuando se especifica el parámetro -? en cualquier cmdlet, no se ejecuta el cmdlet, sino que se muestra la Ayuda correspondiente.
Windows PowerShell incluye varios parámetros conocidos como los parámetros comunes. Dado que se controlan mediante el motor de Windows PowerShell, estos parámetros se comportan de la misma manera siempre que un cmdlet los implementa. Los parámetros comunes son WhatIf , Confirm , Verbose , Debug , Warn , ErrorAction , ErrorVariable , OutVariable y OutBuffer.
Los cmdlets principales de Windows PowerShell utilizan nombres estándar para parámetros similares. Aunque el uso de nombres de parámetros no es obligatorio, existen unas directrices de uso explícitas a fin de fomentar la normalización.
Por ejemplo, estas directrices recomiendan llamar ComputerName a un parámetro que haga referencia a un equipo por su nombre, en lugar de Server, Host, System, Node u otras palabras alternativas comunes. Algunos nombres de parámetros recomendados importantes son Force , Exclude , Include , PassThru , Path y CaseSensitive.
El cmdlet Get-Command de Windows PowerShell recupera los nombres de todos los comandos disponibles. Si escribe Get-Command en el símbolo del sistema de Windows PowerShell, obtendrá un resultado similar al siguiente:
PS> Get-Command CommandType Name Definition
Cmdlet Add-Content Add-Content [-Path] <String[... Cmdlet Add-History Add-History [[-InputObject] ... Cmdlet Add-Member Add-Member [-MemberType] <PS... ...
Este resultado es muy parecido al de la Ayuda de Cmd.exe: un resumen de los comandos internos con formato de tabla. En el extracto del resultado del comando Get-Command antes mostrado se especifica Cmdlet como valor de CommandType para cada comando mostrado. Un cmdlet es el tipo de comando intrínseco de Windows PowerShell, similar a los comandos dir y cd de Cmd.exe y a elementos integrados en shells de UNIX, como BASH.
En el resultado del comando Get-Command , todas las definiciones finalizan con puntos suspensivos (...) para indicar que PowerShell no puede mostrar todo el contenido en el