Está en la página 1de 30

UT 01: SCRIPTING CON POWERSHELL

Tabla de contenidos
1.- Iniciación a PowerShell
1.1 Qué es PowerShell
1.2 La consola de PowerShell
1.3 Cmdlets
1.4 Alias
1.5 Algunos cmdlets sencillos
1.6 El sistema de ayuda de PowerShell
1.7 Usando la ayuda
1.8 Sintaxis básica de los comandos
1.9 Notación
1.10 Conjuntos de parámetros
1.11 Ejercicios propuestos

2.- Herramientas básicas


2.1 Objetos en PowerShell
2.2 Propiedades y métodos
2.3 Variables
2.4 Concepto de canalización (pipelines)
2.5 Funcionamiento de las canalizaciones
2.6 Cmdlets útiles para canalizaciones
2.7 Ejercicios propuestos

3.- Programación de scripts


3.1 Mi primer script
3.2 Tipos y operadores
3.3 Estructuras de control
3.4 Aspectos sintácticos
3.5 Funciones
3.6 Tipos compuestos
3.7 Ejercicios propuestos

4.- Proyecto
En UT 03 (Active Directory).

ANTONIO J. LEÓN DELGADO 1


UT 01: SCRIPTING CON POWERSHELL

1.- Iniciación a PowerShell


1.1 ¿Qué es PowerShell?
PowerShell es la línea de comandos de Microsoft flexible y potente, con las que
el usuario podrá administrar sistemas, locales y remotos, automatizar tareas mediante
desarrollo de scripts, etc. Se incluye por defecto desde WS 2008 R2 y Windows 7.
El funcionamiento de la mayoría de los shells, incluidos cmd.exe y los shells
Linux/Unix (sh, ksh, y bash), consiste en ejecutar un comando o una utilidad en un
nuevo proceso, y presentar los resultados al usuario en forma de texto. Estos shells
tienen también comandos integrados (internos al shell), como el comando dir en
cmd.exe o cd en bash. Como en la mayor parte de los shells hay pocos comandos
integrados, se han creado numerosas utilidades.
Windows PowerShell es muy diferente.
• No procesa texto, sino objetos.
• Ofrece una gran cantidad de comandos integrados con una interfaz coherente.
• Se utiliza el mismo analizador de comandos para todos los comandos del shell,
en lugar de un analizador distinto para cada herramienta. De este modo,
resulta mucho más sencillo aprender a utilizar cada comando.
• Sus órdenes nativas se denominan cmdlets.
Sin embargo, su ventaja principal es que no es necesario renunciar a todas esas
herramientas a las que estamos acostumbrados. Windows PowerShell permite seguir
utilizando las herramientas tradicionales de Windows o Linux.

1.2 La consola de PowerShell


La personalización o modificación básica del entorno viene determinado por las
opciones de configuración de PS. Para acceder a ellas se debe hacer clic en la esquina
superior izquierda, en el icono de PowerShell y en su menú contextual, elegir
Propiedades.
Aquí podemos cambiar el tamaño del cursor, el historial de comandos, fuente,
tamaño de la ventana, etc.

ANTONIO J. LEÓN DELGADO 2


UT 01: SCRIPTING CON POWERSHELL

Una posible configuración:

Los cambios tendrán efecto de forma permanente si ejecutamos PS como


Administradores.

Atajos de teclado.
Tabulador: autocompleta.
F8: repite las últimas instrucciones y podemos seleccionar la que nos interese.

Ejecución en múltiples líneas


Si PS detecta que no ha terminado la sentencia, PS muestra >> para seguir
escribiendo e intentar ejecutarla.

También podemos teclear la tecla del acento grave y Enter para ejecutar la
sentencia en varias líneas.

ANTONIO J. LEÓN DELGADO 3


UT 01: SCRIPTING CON POWERSHELL

1.3 Cmdlets

El cmdlet Get-Command consulta todos los cmdlets incluyendo alias y


funciones.
[imagen]
Podemos refinar la búsqueda. Vemos, los cmdlets que contienen un verbo en
particular (-verb), por nombre o sustantivo (noun) o los que coinciden con un patrón
(*).

[imagen]

En la salida vemos también el tipo (cmdlet, alias o función) y los nombres de los
módulos que lo contienen.

ANTONIO J. LEÓN DELGADO 4


UT 01: SCRIPTING CON POWERSHELL

1.4 Alias

Podemos ver los alias que tenemos tecleando el cmdlet Get-Alias. Cuando se
escribe un alias en la línea de comandos realmente se está ejecutando el cmdlet o
función asociado a dicho alias.
Podemos saber los alias de un cmdlet o el cmdlet correspondiente a un alias.
Get-Alias -Definition cmdlet
Get-Alias alias

[imagen]

1.5 Algunos cmdlets sencillos para practicar.

[imagen]

ANTONIO J. LEÓN DELGADO 5


UT 01: SCRIPTING CON POWERSHELL

1.6 El sistema de ayuda de PowerShell

Tenemos el cmdlet Get-Help, la función Help, el alias man y el parámetro -?


Por ejemplo, podemos tener ayuda del comando Get-Process con “-?”

Tipos de ayuda:
- Por defecto: get-help <commando>
- Detallada: incluye más detalle y ejemplos: get-help <comando> -Detailed
- Completa: incluye información técnica: get-help <comando> -Full
Podemos obtener directamente ejemplos tecleando get-help <comando> -
Examples.
Podemos utilizar Help cuando la ayuda sea muy extensa ya que nos hace una
salida paginada.
Ayuda en línea: Get-Help <nombreDelCmdlet> -Online
Por ejemplo: Get-Help Get-Process -Online me lleva a
https://docs.microsoft.com/es-es/previous-
versions/powershell/module/Microsoft.PowerShell.Management/Get-
Process?view=powershell-5.0

ANTONIO J. LEÓN DELGADO 6


UT 01: SCRIPTING CON POWERSHELL

1.7 Usando la ayuda


A partir de PS 3.0 no se incluyen ficheros locales de ayuda durante la
instalación. Para tener actualizado el sistema de ayuda local ejecutamos el cmdlet
Update-Help. Se conecta a Internet y descarga lo más actualizado de cada módulo. es
como el update/upgrade de Linux. Podemos ver que algunos módulos no se pueden
actualizar.

[imagen]

Podemos recuperar ayuda sobre conceptos con la palabra about seguida del
carácter subrayado y el concepto. Por ejemplo: Get-Help about_history
Conceptos disponibles
Get-Help about_*

ANTONIO J. LEÓN DELGADO 7


UT 01: SCRIPTING CON POWERSHELL

Ejemplo de ayuda sobre un concepto: about_updatable_help


Get-Help about_updatable_help

Ejemplo de ayuda sobre un cmdlet: Get-ChildItem


Get-Help Get-ChildItem
Get-Help Get-ChildItem -Examples
Get-Help Get-ChildItem -parameter path
Get-Help Get-ChildItem -Detailed
Get-Help Get-ChildItem -Full
Get-Help Get-ChildItem -showwindow
Get-Help Get-ChildItem -Online

ANTONIO J. LEÓN DELGADO 8


UT 01: SCRIPTING CON POWERSHELL

1.8 Sintaxis básica de los comandos

1.9 Notación

ANTONIO J. LEÓN DELGADO 9


UT 01: SCRIPTING CON POWERSHELL

1.10 Conjuntos de parámetros

ANTONIO J. LEÓN DELGADO 10


UT 01: SCRIPTING CON POWERSHELL

En resumen, tenemos lo siguiente:

ANTONIO J. LEÓN DELGADO 11


UT 01: SCRIPTING CON POWERSHELL

1.11 Ejercicios propuestos


Sección: Primeros pasos
1.- Inicia sesión como Administrador y ejecuta la consola de PowerShell. A
continuación, configura algunas de las propiedades de la consola. Comienza por
seleccionar el estilo y tamaño de letra que prefieras. A continuación, ajusta el
tamaño del búfer de pantalla y la ventana para que ocupen exactamente el
escritorio, sin solaparse con la barra de tareas. Cierra la consola y vuelve a
abrirla, y contesta: ¿las propiedades que has ajustado se mantienen entre
sesiones de la consola o no?

Si se mantienen.

2.- Ejecuta los siguientes cmdlets en la consola de PowerShell, en orden, e


indica aquellos que provocan un error.

ANTONIO J. LEÓN DELGADO 12


UT 01: SCRIPTING CON POWERSHELL

1. Funciona

2. Error
3. Funciona
4. Funciona

5. Error
6. Funciona

ANTONIO J. LEÓN DELGADO 13


UT 01: SCRIPTING CON POWERSHELL

7. Funciona

8. Error

ANTONIO J. LEÓN DELGADO 14


UT 01: SCRIPTING CON POWERSHELL

3.- ¿Cómo has sabido cuáles de los cmdlets del ejercicio anterior eran
erróneos? Explica brevemente el motivo por el cual los erróneos han fallado.

Porque he ido probando los cmdlets y los he visto con Get-Command -Name [command]

4.- Intenta ejecutar correctamente el siguiente cmdlet


get-childitem c:\Windows
En dos líneas, ubicando el nombre del cmdlet (get-childitem) en la primera, y
el argumento (c:\Windows) en la segunda. Explica brevemente cómo has
podido conseguirlo.

ANTONIO J. LEÓN DELGADO 15


UT 01: SCRIPTING CON POWERSHELL

Sección: CMDLETS y ALIAS

1.- Utilizando Get-Command, escribe un cmdlet que resuelva cada uno de los
casos siguientes en la consola:

a. Consultar todos los comandos PowerShell disponibles en el sistema.

b. Consultar los comandos que comiencen por “update”.

ANTONIO J. LEÓN DELGADO 16


UT 01: SCRIPTING CON POWERSHELL

c. Consultar los comandos cuyo verbo de acción sea “set”.

d. Consultar los comandos cuyo nombre de objeto sea “process”.

Observación: recordar que los cmdlets son una combinación de verbo-


sustantivo (nombre)

2.- Uno de los parámetros de Get-Command es “-CommandType”, que


permite filtrar en la consulta los diferentes tipos de comandos de PowerShell
(cmdlet, alias, function). Utiliza este parámetro para repetir las dos primeras
búsquedas (apartados a) y b)) del ejercicio anterior, pero de forma que sólo se
recuperen los cmdlets.

ANTONIO J. LEÓN DELGADO 17


UT 01: SCRIPTING CON POWERSHELL

3.- Utilizando Get-Alias, escribe un cmdlet que resuelva cada uno de los casos
siguientes en la consola:

a. Consultar todos los alias disponibles en el sistema.

b. Consultar los alias que comiencen por “c”.

ANTONIO J. LEÓN DELGADO 18


UT 01: SCRIPTING CON POWERSHELL

c. Consultar todos los alias del cmdlet “Clear-Host”.

d. Consultar el cmdlet cuyo alias es “copy”

4.- Escribe una secuencia de cmdlets que resuelva la siguiente secuencia de


acciones:

a. Situarse en “c:\”

ANTONIO J. LEÓN DELGADO 19


UT 01: SCRIPTING CON POWERSHELL

b. Crear una carpeta denominada “c:\Datos”.

c. Situarse en “c:\Datos ”.

d. Crear un fichero vacío denominado “upv.txt”.

e. Añadir al fichero anterior el contenido “IES Gregorio Prieto”.

f. Copiar el fichero anterior a otro denominado “upv2.txt”.

ANTONIO J. LEÓN DELGADO 20


UT 01: SCRIPTING CON POWERSHELL

g. Borrar el fichero “upv.txt”.

h. Visualizar por pantalla el contenido del fichero “upv2.txt”.

i. Ejecutar la acción por defecto sobre el fichero “upv2.txt” (abrir el bloc de


notas), y modificar el contenido del fichero como prefiera.

ANTONIO J. LEÓN DELGADO 21


UT 01: SCRIPTING CON POWERSHELL

j. Renombrar el fichero “upv2.txt” como “upv.txt”.

k. Visualizar por pantalla el fichero “upv.txt”.

ANTONIO J. LEÓN DELGADO 22


UT 01: SCRIPTING CON POWERSHELL

l. Borrar el fichero “upv.txt”.

m. Situarse en “c:\”
n. Eliminar la carpeta “c:\Datos”.

5.- Averigua posibles alias para los cmdlets utilizados en el ejercicio anterior, y
repite la misma secuencia de acciones utilizando esos alias en lugar de los
cmdlets originales.

ANTONIO J. LEÓN DELGADO 23


UT 01: SCRIPTING CON POWERSHELL

Sección: El sistema de ayuda

1.- Actualizar el sistema de ayuda con Update-Help. A partir de ahí, utiliza los cmdlets
Get-Help y Get-Command para averiguar la información necesaria para contestar el
resto de las siguientes cuestiones.

2.- En PowerShell, los cmdlets que permiten interactuar con los procesos en
ejecución en el sistema se nombran con el nombre de objeto “process”. Mediante
Get-Command, averigua el nombre de todos esos cmdlets.
A partir de ahí, utiliza dichos cmdlets para resolver los siguientes ejercicios,
consultando la ayuda disponible sobre ellos para saber cuál utilizar en cada caso, y
cómo:
a) Lanzar a ejecución un proceso que ejecute el programa notepad.exe (bloc de
notas). Observación: no cierres Notepad.

b) Obtener el listado de los procesos en ejecución en el sistema.

ANTONIO J. LEÓN DELGADO 24


UT 01: SCRIPTING CON POWERSHELL

c) Listar exclusivamente el proceso que ejecuta el bloc de notas, utilizando su


nombre de proceso (columna “ProcessName” en el listado anterior).

d) Finalizar el proceso que ejecuta el bloc de notas, utilizando su identificador


interno (“Id”).

e) Volver a listar todos los procesos en ejecución del sistema, y localizar el que
más CPU ha consumido y aquel que está utilizando más memoria virtual
(NOTA: consulta la ayuda completa del cmdlet para averiguar el significado de
las columnas del listado).

Get-process | ft name,id,cpu

ANTONIO J. LEÓN DELGADO 25


UT 01: SCRIPTING CON POWERSHELL

3.- Consulta la ayuda sobre el concepto “about_history”, y contesta a las siguientes


preguntas:

a) ¿Qué hace el cmdlet Get-History?

El cmdlet Get-History obtiene el historial de la sesión, es decir, la lista de comandos


ingresados durante la sesión actual. PowerShell mantiene automáticamente un
historial de cada sesión. El número de entradas en el historial de la sesión está
determinado por el valor de la variable de preferencia $ MaximumHistoryCount.

ANTONIO J. LEÓN DELGADO 26


UT 01: SCRIPTING CON POWERSHELL

b) ¿Qué hace el cmdlet Invoke-History?

El cmdlet Invoke-History ejecuta comandos desde el historial de la sesión.


Puede pasar objetos que representan los comandos de Get-History a Invoke-
History, o puede identificar comandos en el historial actual utilizando su
número de identificación. Para encontrar el número de identificación de un
comando, use el cmdlet Get-History.

ANTONIO J. LEÓN DELGADO 27


UT 01: SCRIPTING CON POWERSHELL

c) Averigua los alias, si existen, de los dos cmdlets anteriores.

d) Utilizando ambos cmdlets (y/o sus alias), vuelve a ejecutar los cmdlets que
has utilizado para resolver el ejercicio 2.

e) Indica cuáles son los atajos de teclado que se mencionan en la ayuda del
concepto “about_History”, y practica brevemente con ellos.

ANTONIO J. LEÓN DELGADO 28


UT 01: SCRIPTING CON POWERSHELL

4.- Consulta la ayuda sobre el concepto “ about _line_editing”, y contesta


brevemente qué tipo de ayuda incorpora este concepto. ¿Qué se consigue
exactamente con las siguientes combinaciones de teclas?

a) CTRL + Cursor izquierdo: Para mover el cursor una palabra a la izquierda


b) CTRL + cursor derecho: Para mover el cursor una palabra hacia la derecha
c) CTRL + Fin: Para desplazarse al inicio de una línea, presione la tecla INICIO.
Para desplazarse al final de una línea, presione la tecla FIN.
d) Tabulador: Para completar el nombre de un cmdlet, un parámetro o una ruta,
presione la tecla Tab. Para desplazarse por una lista de valores, presione la
tecla Tab nuevamente.

5.- Utiliza la ayuda sobre el cmdlet “New-Alias” (y en particular, la ayuda que


incluye ejemplos de uso) para averiguar cómo crear nuevos alias para un cmdlet
existente. A continuación, crea un alias del cmdlet “Get- Childitem” denominado “l”.
Crea otros alias a tu gusto para alguno de los cmdlets que hayas utilizado hasta
ahora.

ANTONIO J. LEÓN DELGADO 29


UT 01: SCRIPTING CON POWERSHELL

ANTONIO J. LEÓN DELGADO 30

También podría gustarte