Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIÓN…………………………………………………. 3
UNIDAD 1. POWERSHELL
1. Definición y requisitos de PowerShell……………………... 4
2. Instalación de PowerShell…………………………………….. 5
3. Versiones de PowerShell……………………………………… 7
4. Comandos básicos (directorios y archivos)…………………. 10
CONCLUSIÓN……………………………………………………… 36
Introducción
Windows PowerShell promete revolucionar el mundo de la administración del sistema y los shells
de línea de comandos. Desde sus canalizaciones basadas en objetos hasta su enfoque de
administrador y su enorme alcance en otras tecnologías de administración de Microsoft,
PowerShell mejora drásticamente la productividad de los administradores y usuarios avanzados
por igual. Cuando se aprende una nueva tecnología, es natural sentirse desconcertado al principio
por todas las características y funcionalidades desconocidas. Esto quizás suena especialmente
cierto para los usuarios nuevos de Windows PowerShell porque puede ser su primera experiencia
con un shell de línea de comandos con todas las funciones. O peor, han escuchado historias de las
fantásticas capacidades integradas de scripting de PowerShell y temen ser forzados a un mundo de
programación que han evitado activamente hasta ahora. Afortunadamente, estos temores son
completamente equivocados; PowerShell es un shell que crece contigo y crece contigo. Las
capacidades que PowerShell, ofrece son:
PowerShell funciona con comandos y aplicaciones estándar de Windows. No tiene que tirar lo
que ya sabe y usa.
PowerShell presenta un nuevo y poderoso tipo de comando. Los comandos de
PowerShell (llamados cmdlets) comparten una sintaxis Verbo-Sustantivo común y ofrecen
muchas mejoras de usabilidad sobre los comandos estándar.
PowerShell entiende los objetos. Trabajar directamente con objetos ricamente estructurados
hace que trabajar con (y combinar) comandos de PowerShell sea mucho más fácil que trabajar
en el mundo de texto plano de los shells tradicionales.
PowerShell atiende a los administradores. Incluso con todos sus avances, PowerShell se enfoca
fuertemente en su uso como un shell interactivo: la experiencia de ingresar comandos en una
aplicación PowerShell en ejecución.
PowerShell admite el descubrimiento. Con tres comandos simples, puede aprender y descubrir
casi todo lo que PowerShell tiene para ofrecer.
PowerShell permite scripts ubicuos. Con un lenguaje de secuencias de comandos completo
que funciona directamente desde la línea de comandos, PowerShell le permite automatizar
tareas con facilidad.
PowerShell une muchas tecnologías. Al permitirle trabajar con .NET, COM, WMI, XML y Active
Directory, PowerShell hace que trabajar con estas tecnologías previamente aisladas sea más
fácil que nunca.
PowerShell simplifica la administración de los almacenes de datos. A través de su modelo de
proveedor, PowerShell le permite administrar almacenes de datos utilizando las mismas
técnicas que ya usa para administrar archivos y carpetas. Exploraremos cada uno de estos
pilares en este recorrido introductorio de PowerShell. Si está ejecutando Windows 7 (o
posterior) o Windows 2008 R2 (o posterior), PowerShell ya está instalado.
1.- PowerShell
Requisitos
Windows PowerShell 5.1
CONSOLA
Versión Localización
Windows 10 Haga clic en el icono de Windows de la esquina inferior
izquierda y empiece a escribir PowerShell.
Windows 8.1 u 8.0 En la pantalla Inicio, empiece a escribir PowerShell.
Si está en el escritorio, haga clic en el icono de Windows de la
esquina inferior izquierda y empiece a escribir PowerShell.
Windows 7 SP1 Haga clic en el icono de Windows de la esquina inferior
izquierda y empiece a escribir PowerShell en el cuadro de
búsqueda
ISE
Versión Localización
Windows 10 Haga clic en el icono de Windows de la esquina inferior
izquierda y empiece a escribir ISE.
Windows 8.1 u 8.0 En la pantalla Inicio, escriba PowerShell ISE.
Si está en el escritorio, haga clic en el icono de Windows de la
esquina inferior izquierda y escriba PowerShell ISE.
Windows 7 SP1 Haga clic en el icono de Windows de la esquina inferior
izquierda y empiece a escribir PowerShell en el cuadro de
búsqueda.
Versiones
PowerShell 1.0
PowerShell 1.0 fue lanzado en noviembre de 2006 para Windows XP SP2,
Windows Server 2003 SP1 y Windows Vista. Es un componente opcional de
Windows Server 2008.
PowerShell 2.0
Windows PowerShell ISE v2.0 en Windows 7, un entorno de desarrollo integrado
para los scripts de PowerShell.
PowerShell 2.0 está integrado con Windows 7 y Windows Server 2008 R2 y se
lanza para Windows XP con Service Pack 3, Windows Server 2003 con Service
Pack 2 y Windows Vista con Service Pack 1.
PowerShell 2.0 incluye cambios en el lenguaje de scripts y en la API de
hospedaje, además de incluir más de 240 nuevos cmdlets.
PowerShell 3.0
PowerShell 3.0 está integrado con Windows 8 y con Windows Server 2012.
Microsoft también ha puesto a disposición PowerShell 3.0 para Windows 7 con
Service Pack 1, para Windows Server 2008 con Service Pack 1 y para Windows
Server 2008 R2 con Service Pack 1.
PowerShell 3.0 es parte de un paquete más grande, Windows Management
Framework 3.0 (WMF3), que también contiene el servicio WinRM para apoyar el
remoting. Microsoft hizo varias versiones de Community Technology Preview de
WMF3. El 2 de diciembre de 2011 se publicó una versión temprana de la
Community Technology Preview 2 (CTP 2) de Windows Management Framework
3.0. Windows Management Framework 3.0 se publicó para su disponibilidad
general en diciembre de 2012 y se incluye con Windows 8 y Windows Server 2012
de forma predeterminada.
PowerShell 4.0
PowerShell 4.0 está integrado con Windows 8.1 y con Windows Server 2012 R2.
Microsoft también ha hecho que PowerShell 4.0 esté disponible para Windows 7
SP1, Windows Server 2008 R2 SP1 y Windows Server 2012.
PowerShell 5.0
Windows Management Framework (WMF) 5.0 RTM que incluye PowerShell 5.0
fue relanzado a la web el 24 de febrero de 2016, después de un lanzamiento inicial
con un grave bug. Las características clave incluyen cmdlets OneGet PowerShell
para soportar la administración de paquetes basada en el repositorio de
Chocolatey y la ampliación del soporte para la administración de conmutadores a
los conmutadores de red de capa 2.
PowerShell 7
PowerShell 7 es el producto de reemplazo para los productos PowerShell Core 6.x
así como para Windows PowerShell 5.1, que es la última versión de Windows
PowerShell soportada. Para que PowerShell 7 sea un reemplazo viable para
Windows PowerShell 5.1 debe tener casi paridad con Windows PowerShell en
términos de compatibilidad con los módulos que se envían con Windows.
Las nuevas características de PowerShell 7 incluyen:
o Construido sobre .NET Core 3.1 (LTS)
o ForEach-Object -Parallel
o Envoltura de compatibilidad con Windows
o Notificación de nueva versión
o Nueva vista de error y cmdlet Get-Error
o Operadores de la cadena de oleoductos (&& y ||)
o ?: operador ternario (a ? b : c)
o Asignación nula y operadores de coalescencia nula (??= y ??)[97]
o Invocación de plataforma Invoke-DscResource (experimental)
o Out-GridView, -ShowWindow y otros cmdlets GUI heredados están de
vuelta en Windows
ls noe/desktop
Estando desde la carpeta users y moverse al escritorio
ls users/noe/desktop
Estando desde el directorio C: moverse al escritorio
Resultado:
Ayuda (help)
PowerShell no espera que memoricemos todos los parámetros posibles para
todos los cmdlets. En su lugar, proporciona una forma sencilla de enumerarlos
utilizando el cmdlet Get-Help.
Get-Help gc
Fundamentos de PowerShell
Variables y constantes
Usar variables en PowerShell
Para definir una variable en PowerShell sólo tenemos que nombrarla, aunque
siguiendo una serie de restricciones:
Si una variable va a contener un valor que no debe cambiar a lo largo del script,
podemos indicar que sea de sólo lectura:
En cualquier momento puedes obtener una lista completa de las variables que se
hayan definido hasta ese momento. Para lograrlo, basta con utilizar el cmdlet Get-
Variable.
Alias
Powershell permite el uso de accesos directos (alias) en lugar de los nombres de
los cmdlets.
Se puede escribir ls , dir o gci lugar de Get-ChildItem y obtener el mismo
resultado. Alias es equivalente a su cmdlet.
Tablas y tablas asociativas
1. Arrays asociativos estándares
Un array asociativo, también llamado tabla de hash, es una tabla en la cual cada
valor se referencia por una clave y no por un índice. Hasta aquí hemos visto que
en un array cada valor se indexaba numéricamente. No obstante, en una tabla de
hash, esta noción de indexación numérica ya no existe. Utilizamos claves como
identificadores. Por ejemplo, veamos una tabla de hash en la que cada elemento
(clave) posee un valor siendo en este caso la representación de un precio.
Clave Valor
Proyector 1600
Television 1400
Consola_de_juegos 400
Con
las
tablas de hash, igual que con los arrays clásicos, puede utilizar tipos de datos
heterogéneos.
$hashtable = @{}
b. Inicializar un array asociativo con datos
Redirecciones y tuberías
Tuberías o canalización.
Al igual que Linux, Powershell permite combinar dos o más comandos en uno
solo. Tubería o canalización, cualquiera de ellos nos sirve para entendernos.
Cuando se combinan comandos en una canalización, se pasan datos entre sí en
forma de objetos. El primer comando devuelve uno o más objetos a través de
la canalización al segundo comando. El segundo comando procesa estos objetos
y a continuación pasa objetos nuevos o revisados al tercer comando. Este proceso
continua hasta que se hayan ejecutado todos los comandos de la canalización.
Para encadenar comandos en una canalización, tenemos que especificar cada
comando en el orden que tiene que ejecutarse. Los comandos los separamos
entre si con el símbolo («|» barra vertical). Los comandos se ejecutaran de
izquierda a derecha.
Ejemplo 1:
>get-help * | get-help –detailed
El primer comando nos mostraría toda la ayuda, pero le pasamos el resultado al
segundo comando y al final nos mostrara toda la ayuda, pero detallada. Ya se que
no es un buen ejemplo pero como todavía no hemos visto otros cmdlets… No os
preocupes que esto lo vamos a utilizar mucho a partir de ahora.
Ejemplo 2:
>get-command -verb set | get-help -examples
Ahora podemos revisar el fichero todas las veces que queramos e incluso imprimirlo si es nuestro
deseo.
Ejemplo 2:
Bucles
Un bucle es una estructura repetitiva que permite ejecutar varias veces las
instrucciones que se encuentran en el bloque de instrucciones.
1. Bucle While
Este bucle describe un desarrollo preciso. Las instrucciones de este bucle se
repiten mientras que se satisfaga la condición del mismo (es verdad).
La sintaxis de un bucle While es la siguiente:
While (<condición>)
{
#bloque de instrucciones
}
Su funcionamiento es el siguiente:
1. El bucle evalúa la condición.
2. Si la condición es falsa, no se ejecuta el bloque de instrucciones y se finaliza el
bucle.
3. Si la condición es verdadera, entonces se ejecuta el bloque de instrucciones.
4. Vuelta al paso 1.
2. Bucle Do-While
El bucle Do-While se parece al bucle While, con la diferencia que la comprobación
de la condición se realiza al final. El bucle Do-While tiene la siguiente estructura:
Do
{
#bloque de instrucciones
}
While (<condición>)
Estando la evaluación al final, el bloque de instrucciones se ejecuta al menos una
vez aunque la condición sea falsa
Estructura condicional If, Else, ElseIf
Una estructura condicional permite, mediante la evaluación de una condición,
orientar la ejecución hacia un bloque de instrucciones o hacia otro. La sintaxis de
una estructura condicional es la siguiente:
If (condición)
{
#bloque de instrucciones
}
Para entender mejor el uso de una estructura condicional, veamos algunos
ejemplos:
Imaginemos que queremos determinar si un valor introducido por el usuario es la
letra A. Para ello, utilizaremos una estructura condicional con una condición sobre
el valor de la variable evaluada. Usando un operador de comparación, la
estructura resultante es la siguiente:
$var = Read-Host "Introduzca un carácter"
If ($var -eq ’A’)
{
"El carácter introducido por el usuario es una ’A’"
}
Si la variable introducida por el usuario en una A, entonces se muestra una
cadena de caracteres, en caso contrario la ejecución seguirá su curso.
Es posible asociar a la instrucción If la cláusula Else. Esta cláusula permite en el
caso de devolver un valor False orientar hacia un segundo bloque de instrucciones
el procesamiento. Tomemos el siguiente ejemplo:
If (($var1 -eq 15) -and ($var2 -eq 18))
{
# Bloque de instrucciones 1
}
Else
{
# Bloque de instrucciones 2
}
En un primer momento, PowerShell evalúa la primera condición
Switch
Switch (<Expresión>)
{
<Valor_1> { bloque de instrucciones 1}
<Valor_2> { bloque de instrucciones 2}
<Valor_3> { bloque de instrucciones 3}
Default { bloque de instrucciones 4}
}
Function Hola
{
$date = Get-Date
Write-Host "Hola, hoy es el $date" -Foreground Yellow
}
PS > hola
Hola, hoy es el 13/01/2015 23:18:54
Scripts
Los scripts tienen un funcionamiento muy similar a las funciones, es decir que
también pueden aprovechar el atributo [CmdletBinding], utilizar parámetros, así
como proponer una ayuda integrada (como veremos a continuación) para así
comportarse exactamente como comandos nativos.
Por otra parte, los scripts PowerShell constituyen el entorno físico donde se
almacenan generalmente las variables así como un conjunto de funciones.
Tienen la extensión .ps1.
Sea cual sea la versión de PowerShell, también con la versión 5, todos los scripts
tienen la extensión .ps1.
1. Estructuración de un script
Dicho esto, en su forma más minimalista, basta con que el script contenga el
cuerpo principal, siendo el resto opcional. Generalmente encontraremos en las
primeras líneas del script algunos comentarios describiendo brevemente: