PowerShell
Introducción
- Desde siempre los administradores de sistemas utilizan los scripts para
automatizar la realización de tareas tediosas, por ejemplo la creación de
cuentas de usuario.
-Los scripts permiten:
1. Ahorro de tiempo: permiten realizar tareas complejas y ser
ejecutados automáticamente por el sistema sin intervención humana
2. Limitar los errores: un script sólo es necesario escribirlo una vez y
puede utilizarse un gran número de veces sin los riesgos de errores
asociados a la realización manual de la tarea
3. Mayor flexibilidad: los scripts pueden adaptarse a todas las
situaciones integrando un mínimo de lógica.
PowerShell by JGD
-Al comienzo de la historia existía
Un poco de historia Unix y con el los primeros
entornos de ejecución de scripts
(shells): Bourne shell (sh), C shell
(csh), Korn shell (ksh).
-En 1981 Microsoft presenta MS-
DOS con los primeros scripts
batch (.bat)
-En 2005 Microsoft anuncia
Monad, versión preliminar de
Power Shell y desde entonces…
PowerShell by JGD
Versiones de PowerShell
PowerShell by JGD
Versiones de PowerShell
Práctica 1
Abre PowerShell y ejecuta el comando get-host
PowerShell by JGD
Primeros pasos con PowerShell
-PowerShell es a la vez un intérprete de comandos y un potente lenguaje de
scripts.
-Su potencia proviene en gran parte de la herencia del Framework .NET sobre
el que se basa.
-Para describirlo en pocas palabras, el Framework .NET es una enorme
biblioteca de clases que nos permitirán crear objetos para actuar con el
conjunto del sistema operativo sin esfuerzo.
-PowerShell no rompe totalmente con el pasado y prácticamente todos los
comandos que estaban en CMD lo están también en PowerShell además de
los comandos básicos de Unix: dir, md, cd, copy, mkdir, ls, ps, mv etc
Práctica 2 Abre PowerShell y ejecuta el comando Get-Alias
PowerShell by JGD
Primeros pasos con PowerShell
- Los comandos de PowerShell se denominan “cmdlets” por command-apples.
O también llamados “commandlets”.
-La mayoría están constituidos de la siguiente forma: un verbo y un nombre
separados por un guión: verbo-nombre. Por ejemplo Get-Command.
-Con PowerShell encontraremos una serie de verbos genéricos: Get, Set, Add,
Remove, etc. Que se combinan con diferentes nombres como Path, Variable,
Item, Object, etc
Práctica 3 ejecuta los siguientes comandos y analiza los resultados
• ejecuta el comando Get-Command | more
• ejecuta el comando Get-Command | Measure-Object
• ejecuta el comando Help Get-Command
PowerShell by JGD
Primeros pasos con PowerShell
Práctica 4
- Obtener lista de comandos que se aplican a los objetos.
- Obtener listado de los alias
-Obtener la lista de comandos que aplican a “items”
Solución
• Get-Command –Noun object
• Get-Command -CommandType alias
• Get-Command *-Item
PowerShell by JGD
Primeros pasos con PowerShell
-Get-Member permite listar todas las propiedades y métodos de un objeto así
como su tipo.
Práctica 5
1. Declara una variable con texto “Buenos dias”.
2. Obtener lista de métodos y definiciones asociadas
3. Convertir el texto a mayúsculas
Solución
• $miVariable = 'Buenos dias‘
• $miVariable | Get-Member
• $[Link]()
PowerShell by JGD
Primeros pasos con PowerShell
-Relación entre los principales comandos de DOS y commandlet de
PowerShell.
DOS/CMD Commandlet Descripción
DIR Get-ChildItem Lista el directorio
CD Set-Location Cambia de directorio
MD New-Item Crea archivo/directorio
RD Remove-Item Elimina archivo/directorio
MOVE Move-Item Mueve archivo/directorio
REN Rename-Item Renombre archivo/dir
COPY Copy-Item Copia archivo/directorio
PowerShell by JGD
Primeros pasos con PowerShell
Práctica 6
1. Mostrar (recursivamente) todos los archivos con la extensión log de una
estructura de directorios.
2. Obtener el nombre de los archivos con tamaño superior a 2Mb
3. Obtener los archivos que tengan una fecha de modificación posterior al 4
de enero de 2019.
Solución
• Get-ChildItem c:\users\* -Include *.log –Recurse
• Get-ChildItem | Where-Object {$_.Length -gt 2MB}
• Get-ChildItem | Where-Object {$_.LastWriteTime -gt '01/04/2019'}
El $_ indica que tratamos el objeto en curso.
PowerShell by JGD
Primeros pasos con PowerShell
Práctica 7
1. Mostrar todas las propiedades disponibles de un objeto tipo archivo:
2. Para obtener una única propiedad de un objeto (fecha de creación por
ejemplo):
Solución
• Get-ChildItem miarchivo | Format-List *
• (Get-ChildItem miarchivo).creationTime
PowerShell by JGD
Proveedores
Ateniéndose a una definición estilo “manual de programación”, se puede decir
que “Son programas basados en .NET framework que exponen la información
de una fuente de datos, para que pueda visualizarse y trabajar con ella desde
Windows PowerShell, accediendo a dicha información de forma similar a
como se manipula un sistema de ficheros en línea de comandos”.
Esto simplifica el acceso a datos externos, fuera del entorno de PowerShell.
Por ejemplo, podemos acceder al registro de Windows, como si fuera un
sistema de archivos. Esto significa, ser capaces de usar los cmdlets como si
estuviéramos trabajando con archivos y carpetas
•Get-PSProvider
PowerShell by JGD
Proveedores
Práctica 8
1. Mostrar las variables de entorno.
2. Posicionarse en el interior del del proveedor Environment
3. Crear una nueva variable de entorno (New-Item) y borrarla
posteriormente (Remove-Item)
•Get-ChildItem Env:
•Cd Env:
PowerShell by JGD