04 - Win Powershell - Molina-Tello-Villagra PDF
04 - Win Powershell - Molina-Tello-Villagra PDF
04 - Win Powershell - Molina-Tello-Villagra PDF
Índice
1 Introducción
Windows PowerShell es una interfaz de consola (CLI) con posibilidad de escritura y unión de
comandos por medio de instrucciones. Es mucho más rica e interactiva que sus predecesores,
desde DOS hasta Windows 7. Esta interfaz de consola está diseñada para su uso por parte de
administradores de sistemas, con el propósito de automatizar tareas o realizarlas de forma más
controlada. Originalmente denominada como MONAD en 2003, su nombre oficial cambió al
actual cuando fue lanzada al público el 25 de abril del 2006.
PowerShell no sólo permite interactuar con el sistema operativo, sino también con programas de
Microsoft como SQL Server, Exchange o IIS. La principal utilidad de PowerShell es permitir automatizar
tareas administrativas al usuario.
Una de las principales funciones de PowerShell es tratar de igualar al famoso lenguaje Perl de
UNIX. El cual está considerado versátil, potente y con facilidad para interactuar con el sistema
operativo. Exchange server 2007 utiliza PowerShell internamente. La tendencia es que todas las
aplicaciones tengan su sección visual y una opción para ver el código generado en PowerShell.
Monitorizar contadores
Apagar o detener servicios
Modificar registros del sistema
2 Conceptos básicos de Windows PowerShell
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
Las herramientas tradicionales de línea de comandos cuentan con sus propios esquemas para
solicitar y mostrar la Ayuda. Algunas herramientas utilizan /? para activar la presentación de la
Ayuda, mientras que otras utilizan -?, /H o incluso //. Algunas muestran la Ayuda en una ventana
de la GUI y no en la consola. Algunas herramientas complejas, como las de actualización de
aplicaciones, descomprimen archivos internos antes de mostrar la Ayuda correspondiente. Si usa
un parámetro equivocado, es posible 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 pre
procesará 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.
4.1 Los cmdlets utilizan nombres con verbo y sustantivo para reducir la memorización de
comandos
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 que son importantes para la administración del
sistema. Resulta muy fácil entender cómo estos nombres que constan de dos partes reducen el
esfuerzo de aprendizaje si observamos varios ejemplos de verbos y sustantivos. Los sustantivos
están menos limitados, pero deben describir siempre a qué se aplica un comando. Windows
PowerShell incluye comandos como Get-Process, Stop-Process, Get-Service y Stop-Service.
En el caso de dos sustantivos y dos verbos, la coherencia no simplifica tanto el aprendizaje. No
obstante, en el caso de un conjunto estándar de 10 verbos y 10 sustantivos, tendría solamente 20
palabras que aprender, pero éstas se pueden usar para formar 100 nombres de comandos
distintos. A menudo se reconoce la función de un comando con sólo leer su nombre, y suele ser
evidente el nombre que debe utilizarse para un comando nuevo. Por ejemplo, un comando que
apaga el equipo podría ser Stop-Computer. Un comando que enumera todos los equipos de una
red podría ser Get-Computer. El comando que obtiene la fecha del sistema es Get-Date. Puede
obtener una lista de todos los comandos que incluyen un verbo concreto con el parámetro -Verb
de Get-Command (trataremos Get-Command en profundidad en la siguiente sección). Por
ejemplo, para ver todos los cmdlets que utilizan el verbo Get, escriba:
El parámetro -Noun es incluso más útil porque permite ver una familia de comandos que se
aplican al mismo tipo de objeto. Por ejemplo, si desea ver qué comandos están disponibles para
administrar servicios, escriba el siguiente comando:
5.1 Consejo #1
Para interrumpir una tarea que está siendo ejecutada simplemente oprima las teclas de CTRL + C.
5.2 Consejo #2
Para salir del Shell escriba el comando EXIT y oprima la tecla de ENTER.
5.3 Consejo #3
¿Necesita ayuda o más información en cómo utilizar un comando en PowerShell? Ingrese help
<comando> (ejemplo “help dir”) para obtener más detalles del mismo. Inclusive usted lo puede
utilizar en conjunto con los famosos “wildcards” (*). Por ejemplo, el comando “help get-*” le
busca información de todos los comandos que empiecen con el texto “get-“.
5.4 Consejo #4
También puede obtener el mismo resultado al ingresar el comando seguido por espacio, guión (-)
y el signo de pregunta (?), ejemplo “dir -?“.
5.5 Consejo #5
Un comando puede desplazarse en múltiples líneas si al final coloca el siguiente símbolo “`”
(conocido como el “back-tick”).
5.6 Consejo #6
Usted puede mover el cursor en una línea de comando con las teclas direccionales de IZQUIERDA
y DERECHA. Si utiliza las teclas de CTRL + IZQUIERDA o CTRL + DERECHA usted se puede mover
palabra por palabra en la línea de comando. Para regresar al inicio de la línea oprima la tecla de
HOME y para regresar al final la tecla de END.
5.7 Consejo #7
Oprima las teclas de ARRIBA y ABAJO para circular entre el historial de comandos ya ingresados.
5.8 Consejo #8
Mejor aún, oprima la tecla de F7 y se presentará una ventana con los últimos comandos
utilizados desde que inicio la sesión, acompañado de un número. Oprima el número que se le
asignó al comando para de una forma rápida ingresarlo nuevamente
5.9 Consejo #9
Oprima la tecla de TAB para que PowerShell intente completar la línea del comando. Por ejemplo
si ingresa “di” y oprime la tecla de TAB, PowerShell le empieza a demostrar diversos comandos o
parámetros que empiecen de igual forma. Siga apretando la tecla de TAB para que vaya
circulando entre más opciones.
Cmdlets son unos comandos integrados en el Shell (escrito en lenguajes como Visual Basic y C#)
los cuales cumplen varias tareas. Por ahora es momento de usar la gran variedad de Cmdlets que
ofrece PowerShell (la versión 3 ofrece más de 2,300 cmdlets disponibles).
6 Instalacion de Windows PowerShell en Windows Server 2008
6.1 Paso#1: ejecutaremos el “Server Manager (Administrador de servidor)” como puede
verse en la captura siguiente:
Proceso de instalación.
Una vez finalizada la instalación nos lo indica con la pantalla siguiente.
6.5 Paso#5: Ahora podemos ejecutar Windows PowerShell desde el menú inicio como se
puede ver en la captura siguiente.
Podemos sacar un acceso al menú inicio o incluso al escritorio, para tenerlo más a mano. Para
crear un acceso en el menú inicio, pulsamos botón derecho sobre “Windows PowerShell” y
seleccionamos la opción “Pin to Start Menu“(Anclar al menú inicio).
En la siguiente captura vemos el aspecto que tiene el icono que acabamos de crear en el menú
inicio.
6.6 Paso#6: Y para terminar, ejecutamos Windows PowerShell y veremos algo similar
esto.
Ya tenemos Windows PowerShell instalado en nuestro equipo. En las próximas paginas veremos
cómo utilizarlo para la instalacion y trabajo con active directory.
7 Instalacion de AD (active directory) mediante Windows PowerShell
Para comenzar la instalación de AD desde la línea de comandos, lo que necesitamos saber el
nombre exacto del servicio Active Directory que debemos instalar.
7.1 Paso#1: En primer lugar, abra Windows PowerShell desde Menu inicio.
Esto mostrará una lista de todas las ventanas características de servidor, como se muestra a
continuación. Como se puede ver de esta lista, el nombre del servicio AD es "AD-dominio-
servicios".
7.3 Paso#3: Instalar AD Servicio de Dominio
Para instalar Active Directory desde la línea de comandos, utilice el comando "Install-
WindowsFeature" como se muestra a continuación.
Este comando extraerá todos los archivos binarios necesarios e iniciar la instalación de AD.
Después de completar la instalación de Active Directory, se mostrará el resultado en un formato
de tabla como se muestra a continuación.
Desinstale el controlador de
Desinstalar-ADDSDomainController
dominio del servidor
C: \> Install-AddsForest
7.7 Paso#7: Personalizar la Instalacion
Para instalar el directorio activo con opciones personalizadas, pasar los parámetros
appropropriate como se muestra a continuación. En este ejemplo, estamos configurando varios
parámetros de configuración para nuestra AD incluyendo el DomainName.
C: \> Install-ADDSForest
-CreateDnsDelegation: $ False `
-DatabasePath "C: \ Windows \ NTDS" `
-DomainMode "Win2012R2" `
-DomainName "Thegeekstuff.com" `
-DomainNetbiosName "THEGEEKSTUFF" `
-ForestMode "Win2012R2" `
-InstallDns: $ True `
-logPath "C: \ Windows \ NTDS" `
-NoRebootOnCompletion: $ False `
-SysvolPath "C: \ Windows \ SYSVOL" `
-Force: $ True
El mayor problema que tiene es que los administradores de sistemas tradicionalmente le tienen
alergia a programar, y los programadores le tienen alergia a administrar sistemas, sin embargo es
una forma estupenda de aunar ambos mundos y de conseguir una potencia antes inimaginable
en el mundo Windows. Como programador aprender PowerShell y, sobre todo, aprender a
programar módulos de PowerShell puede abrir un gran campo de trabajo, puesto que no hay
mucha gente que se dedique a ello.