Powershell - Guía rápida

Windows PowerShell es un command-line shell y scripting languagediseñado especialmente para la administración del sistema. Su analogía en Linux se llama Bash Scripting. Basado en .NET Framework, Windows PowerShell ayuda a los profesionales de TI a controlar y automatizar la administración del sistema operativo Windows y las aplicaciones que se ejecutan en el entorno Windows Server.

Comandos de Windows PowerShell, llamados cmdlets, le permite administrar las computadoras desde la línea de comandos. Los proveedores de Windows PowerShell le permiten acceder a los almacenes de datos, como el Registro y el Almacén de certificados, tan fácilmente como accede al sistema de archivos.

Además, Windows PowerShell tiene un analizador de expresiones enriquecido y un lenguaje de secuencias de comandos completamente desarrollado. Entonces, en palabras simples, puede completar todas las tareas que realiza con GUI y mucho más.

PowerShell ISE

Windows PowerShell Integrated Scripting Environment(ISE) es una aplicación de host para Windows PowerShell. En Windows PowerShell ISE, puede ejecutar comandos y escribir, probar y depurar scripts en una única interfaz gráfica de usuario basada en Windows con edición de varias líneas, finalización de tabulaciones, coloración de sintaxis, ejecución selectiva, ayuda contextual y compatibilidad con el derecho a -lenguajes izquierdos.

Puede usar elementos de menú y métodos abreviados de teclado para realizar muchas de las mismas tareas que realizaría en la consola de Windows PowerShell. Por ejemplo, cuando depura un script en Windows PowerShell ISE, para establecer un punto de interrupción de línea en un script, haga clic con el botón derecho en la línea de código y luego haga clic enToggle Breakpoint.

Comandos básicos de PowerShell

Hay muchos comandos de PowerShell y es muy difícil incluir todos estos comandos en este tutorial, nos centraremos en algunos de los comandos más importantes y básicos de PowerShell.

El primer paso es ir al comando Get-Help que le brinda una explicación sobre cómo dar un comando y su parámetro.

El icono de PowerShell se puede encontrar en la barra de tareas y en el menú de inicio. Con solo hacer clic en el icono, se abrirá.

Para abrirlo, simplemente haga clic en el icono y luego se abrirá la siguiente pantalla, lo que significa que PowerShell está listo para que usted trabaje.

Versión de PowerShell

La última versión de PowerShell es la 5.0 y para comprobar qué está instalado en nuestro servidor tecleamos el siguiente comando - :$PSVersionTable como se muestra en la siguiente captura de pantalla y desde la pantalla también sabemos que tenemos PSVersion 4.0

Para actualizar con la última versión donde tiene más Cmdlets tenemos que descargar Windows Management Framework 5.0 desde el siguiente enlace - https://www.microsoft.com/en-us/download/details.aspx?id=50395 e instalarlo.

PowerShell ISE

Windows PowerShell Integrated Scripting Environment(ISE) es una aplicación de host para Windows PowerShell. En Windows PowerShell ISE, puede ejecutar comandos y escribir, probar y depurar scripts en una única interfaz gráfica de usuario basada en Windows con edición de varias líneas, finalización de tabulaciones, coloración de sintaxis, ejecución selectiva, ayuda contextual y compatibilidad con el derecho a -lenguajes izquierdos.

Puede usar elementos de menú y métodos abreviados de teclado para realizar muchas de las mismas tareas que realizaría en la consola de Windows PowerShell. Por ejemplo, cuando depura un script en Windows PowerShell ISE, para establecer un punto de interrupción de línea en un script, haga clic con el botón derecho en la línea de código y luego haga clic enToggle Breakpoint.

Para abrirlo, simplemente vaya a Inicio - Buscar y luego Escriba - PowerShell como se muestra en la siguiente captura de pantalla.

Luego haga clic en Windows PowerShell ISE. O haga clic en la flecha hacia abajo como se muestra en la siguiente captura de pantalla.

Enumerará todas las aplicaciones instaladas en el servidor y luego haga clic en Windows PowerShell ISE.

La siguiente tabla estará abierta:

Tiene tres secciones, que incluyen: PowerShell Console con el número 1, entonces Scripting File número 2 y el tercero es el Command Module donde puedes encontrar el módulo.

Mientras crea el script, puede ejecutarlo directamente y ver el resultado como el siguiente ejemplo:

Comandos básicos de PowerShell

Hay muchos comandos de PowerShell y es muy difícil incluir todos estos comandos en este tutorial, nos centraremos en algunos de los comandos más importantes y básicos de PowerShell.

El primer paso es ir al comando Get-Help que le brinda una explicación sobre cómo dar un comando y su parámetro.

To get the list of Updates -

  • Get-HotFix e instalar un hotfix de la siguiente manera
  • Get-HotFix -id kb2741530

Un cmdlet o "Command let" es un comando ligero que se usa en el entorno de Windows PowerShell. El tiempo de ejecución de Windows PowerShell invoca estos cmdlets en el símbolo del sistema. Puede crearlos e invocarlos mediante programación a través de las API de Windows PowerShell.

Cmdlet vs comando

Los cmdlets son muy diferentes de los comandos en otros entornos de shell de comandos en las siguientes formas:

  • Los cmdlets son objetos de clase de .NET Framework; y no solo ejecutables independientes.

  • Los cmdlets se pueden construir fácilmente con tan solo una docena de líneas de código.

  • Los cmdlets no controlan el análisis, la presentación de errores y el formato de salida. Lo realiza el tiempo de ejecución de Windows PowerShell.

  • El proceso de cmdlets funciona en objetos que no están en el flujo de texto y los objetos se pueden pasar como salida para canalización.

  • Los cmdlets se basan en registros, ya que procesan un solo objeto a la vez.

Obteniendo ayuda

El primer paso es ir al comando Get-Help que le brinda una explicación sobre cómo dar un comando y su parámetro.

A continuación se muestran ejemplos de scripts de PowerShell en Archivos y carpetas.

No Señor. Descripción de la operación
1 Crear carpetas

Ejemplo de secuencia de comandos para mostrar cómo crear carpetas mediante secuencias de comandos de PowerShell.

2 Crear archivos

Ejemplo de secuencia de comandos para mostrar cómo crear archivos mediante secuencias de comandos de PowerShell.

3 Copiar carpetas

Ejemplo de secuencia de comandos para mostrar cómo copiar archivos mediante secuencias de comandos de PowerShell.

4 Copiando documentos

Ejemplo de secuencia de comandos para mostrar cómo crear archivos mediante secuencias de comandos de PowerShell.

5 Eliminar carpetas

Ejemplo de secuencia de comandos para mostrar cómo eliminar carpetas mediante secuencias de comandos de PowerShell.

6 Eliminar archivos

Ejemplo de secuencia de comandos para mostrar cómo eliminar archivos mediante secuencias de comandos de PowerShell.

7 Mover carpetas

Ejemplo de secuencia de comandos para mostrar cómo mover carpetas mediante secuencias de comandos de PowerShell.

8 Mover archivos

Ejemplo de secuencia de comandos para mostrar cómo mover archivos mediante secuencias de comandos de PowerShell.

9 Cambiar nombre de carpetas

Ejemplo de secuencia de comandos para mostrar cómo cambiar el nombre de las carpetas mediante secuencias de comandos de PowerShell.

10 Cambiar nombre de archivos

Ejemplo de secuencia de comandos para mostrar cómo cambiar el nombre de los archivos mediante secuencias de comandos de PowerShell.

11 Recuperando artículo

Ejemplo de secuencia de comandos para mostrar cómo recuperar elementos mediante secuencias de comandos de PowerShell.

12 Comprobar la existencia de la carpeta

Ejemplo de secuencia de comandos para mostrar cómo verificar la existencia de una carpeta mediante secuencias de comandos de PowerShell.

13 Comprobar la existencia del archivo

Ejemplo de secuencia de comandos para mostrar cómo verificar la existencia de archivos mediante secuencias de comandos de PowerShell.

A continuación se muestran ejemplos de scripts de PowerShell en la fecha y hora del sistema.

No Señor. Descripción de la operación
1 Obtener fecha del sistema

Ejemplo de secuencia de comandos para mostrar cómo obtener la fecha del sistema mediante secuencias de comandos de PowerShell.

2 Establecer fecha del sistema

Ejemplo de secuencia de comandos para mostrar cómo configurar la fecha del sistema mediante secuencias de comandos de PowerShell.

3 Obtener la hora del sistema

Ejemplo de secuencia de comandos para mostrar cómo obtener la hora del sistema mediante secuencias de comandos de PowerShell.

4 Establecer hora del sistema

Ejemplo de secuencia de comandos para mostrar cómo configurar la hora del sistema mediante secuencias de comandos de PowerShell.

A continuación se muestran ejemplos de scripts de PowerShell para crear y leer diferentes tipos de archivos.

No Señor. Descripción de la operación
1 Crear archivo de texto

Ejemplo de secuencia de comandos para mostrar cómo crear un archivo de texto mediante secuencias de comandos de PowerShell.

2 Leer archivo de texto

Script de ejemplo para mostrar cómo leer un archivo de texto mediante scripts de PowerShell.

3 Crear archivo XML

Script de ejemplo para mostrar cómo crear un archivo XML utilizando scripts de PowerShell.

4 Leer archivo XML

Script de ejemplo para mostrar cómo leer un archivo XML mediante scripts de PowerShell.

5 Crear archivo CSV

Ejemplo de secuencia de comandos para mostrar cómo crear un archivo CSV mediante secuencias de comandos de PowerShell.

6 Leer archivo CSV

Ejemplo de secuencia de comandos para mostrar cómo leer un archivo CSV mediante secuencias de comandos de PowerShell.

7 Crear archivo HTML

Ejemplo de secuencia de comandos para mostrar cómo crear un archivo HTML mediante secuencias de comandos de PowerShell.

8 Leer archivo HTML

Ejemplo de secuencia de comandos para mostrar cómo leer un archivo HTML mediante secuencias de comandos de PowerShell.

9 Borrando el contenido del archivo

Ejemplo de secuencia de comandos para mostrar cómo borrar el contenido de un archivo mediante secuencias de comandos de PowerShell.

10 Agregar datos de texto

Ejemplo de secuencia de comandos para mostrar cómo agregar texto al contenido de un archivo mediante secuencias de comandos de PowerShell.

Cmdlets

Un cmdlet o "Command let" es un comando ligero que se usa en el entorno de Windows PowerShell. El tiempo de ejecución de Windows PowerShell invoca estos cmdlets en el símbolo del sistema. Puede crearlos e invocarlos mediante programación a través de las API de Windows PowerShell. A continuación se muestran ejemplos de uso avanzado de cmdlets.

No Señor. Tipo y descripción de cmdlet
1 Cmdlet Get-Unique

Programa de ejemplo para mostrar el cmdlet Get-Unique.

2

Group-Object Cmdlet

Programa de ejemplo para mostrar el cmdlet de objeto de grupo.

3 Cmdlet de objeto de medida

Programa de ejemplo para mostrar el cmdlet de objeto de medida.

4 Cmdlet de comparación de objetos

Programa de ejemplo para mostrar el cmdlet Compare-Object.

5 Cmdlet de lista de formato

Programa de ejemplo para mostrar el cmdlet Format-List.

6 Cmdlet de formato ancho

Programa de ejemplo para mostrar el cmdlet de formato ancho.

7 Cmdlet Where-Object

Programa de ejemplo para mostrar el cmdlet Where-Object.

8 Cmdlet Get-ChildItem

Programa de ejemplo para mostrar el cmdlet Get-ChildItem.

9 Cmdlet para cada objeto

Programa de ejemplo para mostrar el cmdlet ForEach-Object.

10 Cmdlet Start-Sleep

Programa de ejemplo para mostrar el cmdlet Start-Sleep.

11 Cmdlet de host de lectura

Programa de ejemplo para mostrar el cmdlet Read-Host.

12 Cmdlet de selección de objeto

Programa de ejemplo para mostrar el cmdlet de selección de objeto.

13 Cmdlet Ordenar objeto

Programa de ejemplo para mostrar el cmdlet Sort-Object.

14 Cmdlet de advertencia de escritura

Programa de ejemplo para mostrar el cmdlet de advertencia de escritura.

15 Cmdlet de host de escritura

Programa de ejemplo para mostrar el cmdlet Write-Host.

dieciséis Cmdlet de elemento de invocación

Programa de ejemplo para mostrar el cmdlet Invoke-Item.

17 Cmdlet de expresión de invocación

Programa de ejemplo para mostrar el cmdlet Invoke-Expression.

18 Cmdlet de comando de medida

Programa de ejemplo para mostrar el cmdlet Measure-Command.

19 Cmdlet de historial de invocación

Programa de ejemplo para mostrar el cmdlet Invoke-History.

20 Cmdlet Agregar historial

Programa de ejemplo para mostrar el cmdlet Add-History.

21 Cmdlet Get-History

Programa de ejemplo para mostrar el cmdlet Get-History.

22 Cmdlet Get-Culture

Programa de ejemplo para mostrar el cmdlet Get-Culture.

Windows PowerShell es un command-line shell y scripting languagediseñado especialmente para la administración del sistema. Su análogo en Linux se llama Bash Scripting. Basado en .NET Framework, Windows PowerShell ayuda a los profesionales de TI a controlar y automatizar la administración del sistema operativo Windows y las aplicaciones que se ejecutan en el entorno Windows Server.

Comandos de Windows PowerShell, llamados cmdlets, le permite administrar las computadoras desde la línea de comandos. Los proveedores de Windows PowerShell le permiten acceder a los almacenes de datos, como el Registro y el Almacén de certificados, tan fácilmente como accede al sistema de archivos.

Además, Windows PowerShell tiene un analizador de expresiones enriquecido y un lenguaje de secuencias de comandos completamente desarrollado. Entonces, en palabras simples, puede completar todas las tareas que realiza con GUI y mucho más. Windows PowerShell Scripting es un lenguaje de secuencias de comandos completamente desarrollado y tiene un analizador de expresiones /

Caracteristicas

  • Cmdlets - Los cmdlets realizan tareas comunes de administración del sistema, por ejemplo, administrar el registro, los servicios, los procesos, los registros de eventos y el uso de Windows Management Instrumentation (WMI).

  • Task oriented - El lenguaje de scripting de PowerShell se basa en tareas y proporciona soporte para scripts y herramientas de línea de comandos existentes.

  • Consistent design- Dado que los cmdlets y los almacenes de datos del sistema utilizan una sintaxis común y tienen convenciones de nomenclatura comunes, el intercambio de datos es fácil. La salida de un cmdlet se puede canalizar a otro cmdlet sin ninguna manipulación.

  • Simple to Use - La navegación simplificada basada en comandos permite a los usuarios navegar por el registro y otros almacenes de datos similares a la navegación del sistema de archivos.

  • Object based- PowerShell posee potentes capacidades de manipulación de objetos. Los objetos se pueden enviar a otras herramientas o bases de datos directamente.

  • Extensible interface. - PowerShell se puede personalizar ya que los proveedores de software independientes y los desarrolladores empresariales pueden crear herramientas y utilidades personalizadas utilizando PowerShell para administrar su software.

Variables

Las variables de PowerShell se denominan objetos. Como PowerShell trabaja con objetos, estas variables se utilizan para trabajar con objetos.

Creando variable

El nombre de la variable debe comenzar con $ y puede contener caracteres alfanuméricos y guiones bajos en sus nombres. Se puede crear una variable escribiendo un nombre de variable válido.

Escriba el siguiente comando en la consola de PowerShell ISE. Suponiendo que se encuentra en la carpeta D: \ test.

$location = Get-Location

Aquí hemos creado una variable $ location y le hemos asignado la salida del cmdlet Get-Location. Ahora contiene la ubicación actual.

Usando variable

Escriba el siguiente comando en la consola de PowerShell ISE.

$location

Salida

Puede ver el siguiente resultado en la consola de PowerShell.

Path                                                                                    
----                                                                                    
D:\test

Obteniendo información de variable

El cmdlet Get-Member puede indicar el tipo de variable que se está utilizando. Vea el ejemplo a continuación.

$location | Get-Member

Salida

Puede ver el siguiente resultado en la consola de PowerShell.

TypeName: System.Management.Automation.PathInfo

Name          MemberType   Definition                                               
----          ----------   ----------                                               
Equals        Method       bool Equals(System.Object obj)                           
GetHashCode   Method       int GetHashCode()                                        
GetType       Method       type GetType()                                           
ToString      Method       string ToString()                                        
Drive         Property     System.Management.Automation.PSDriveInfo Drive {get;}    
Path          Property     System.String Path {get;}                                
Provider      Property     System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath  Property     System.String ProviderPath {get;}

Las variables especiales de PowerShell almacenan información sobre PowerShell. También se denominan variables automáticas. A continuación se muestra la lista de variables automáticas:

Operador Descripción
$$ Representa el último token de la última línea recibida por la sesión.
PS Representa el estado de ejecución de la última operación. Contiene TRUE si la última operación tuvo éxito y FALSE si falló.
$ ^ Representa el primer token de la última línea que recibió la sesión.
PS Igual que $ PSItem. Contiene el objeto actual en el objeto de canalización. Puede utilizar esta variable en comandos que realizan una acción en cada objeto o en objetos seleccionados en una canalización.
$ ARGS Representa una matriz de parámetros no declarados y / o valores de parámetros que se pasan a una función, script o bloque de script.
$ CONSOLEFILENAME Representa la ruta del archivo de consola (.psc1) que se usó más recientemente en la sesión.
$ ERROR Representa una matriz de objetos de error que representan los errores más recientes.
$ EVENTO Representa un objeto PSEventArgs que representa el evento que se está procesando.
$ EVENTARGS Representa un objeto que representa el primer argumento de evento que se deriva de EventArgs del evento que se está procesando.
$ SUSCRIPTOR DE EVENTOS Representa un objeto PSEventSubscriber que representa el suscriptor del evento que se está procesando.
$ EXECUTIONCONTEXT Representa un objeto EngineIntrinsics que representa el contexto de ejecución del host de PowerShell.
$ FALSO Representa FALSO. Puede utilizar esta variable para representar FALSE en comandos y scripts en lugar de utilizar la cadena "false".
$ POR CADA Representa el enumerador (no los valores resultantes) de un bucle ForEach. Puede utilizar las propiedades y métodos de los enumeradores en el valor de la variable $ ForEach.
$ CASA Representa la ruta completa del directorio de inicio del usuario.
$ HOST Representa un objeto que representa la aplicación host actual para PowerShell.
$ ENTRADA Representa un enumerador que enumera todas las entradas que se pasan a una función.
$ LASTEXITCODE Representa el código de salida del último programa basado en Windows que se ejecutó.
$ PARTIDOS La variable $ Matches funciona con los operadores -match y -notmatch.
$ MIINVOCACIÓN $ MyInvocation se completa solo para scripts, funciones y bloques de script. Las propiedades PSScriptRoot y PSCommandPath de la variable automática $ MyInvocation contienen información sobre el invocador o el script de llamada, no sobre el script actual.
$ NESTEDPROMPTLEVEL Representa el nivel de solicitud actual.
$ NULL $ null es una variable automática que contiene un valor NULL o vacío. Puede utilizar esta variable para representar un valor ausente o indefinido en comandos y scripts.
$ PID Representa el identificador de proceso (PID) del proceso que aloja la sesión actual de PowerShell.
$ PERFIL Representa la ruta completa del perfil de PowerShell para el usuario actual y la aplicación host actual.
$ PSCMDLET Representa un objeto que representa el cmdlet o la función avanzada que se está ejecutando.
$ PSCOMMANDPATH Representa la ruta completa y el nombre de archivo del script que se está ejecutando.
$ PSCULTURA Representa el nombre de la referencia cultural actualmente en uso en el sistema operativo.
$ PSDEBUGCONTEXT Durante la depuración, esta variable contiene información sobre el entorno de depuración. De lo contrario, contiene un valor NULL.
$ PSHOME Representa la ruta completa del directorio de instalación de PowerShell.
$ PSITEM Igual que $ _. Contiene el objeto actual en el objeto de canalización.
$ PSSCRIPTROOT Representa el directorio desde el que se ejecuta un script.
$ PSSENDERINFO Representa información sobre el usuario que inició la PSSession, incluida la identidad del usuario y la zona horaria del equipo de origen.
$ PSUICULTURA Representa el nombre de la cultura de la interfaz de usuario (UI) que se usa actualmente en el sistema operativo.
$ PSVERSIONTABLE Representa una tabla hash de solo lectura que muestra detalles sobre la versión de PowerShell que se está ejecutando en la sesión actual.
$ SENDER Representa el objeto que generó este evento.
$ SHELLID Representa el identificador del shell actual.
$ STACKTRACE Representa un seguimiento de la pila del error más reciente.
$ ESTO En un bloque de script que define una propiedad de script o un método de script, la variable $ This se refiere al objeto que se está ampliando.
$ VERDADERO Representa VERDADERO. Puede utilizar esta variable para representar TRUE en comandos y scripts.

PowerShell proporciona un amplio conjunto de operadores para manipular variables. Podemos dividir todos los operadores de PowerShell en los siguientes grupos:

  • Operadores aritméticos
  • Operadores de Asignación
  • Operadores de comparación
  • Operadores logicos
  • Operadores redireccionales
  • Operadores derramados y unidos
  • Operadores de tipo
  • Operadores unarios

Los operadores aritméticos

Los operadores aritméticos se usan en expresiones matemáticas de la misma manera que se usan en álgebra. La siguiente tabla enumera los operadores aritméticos:

Suponga que la variable entera A tiene 10 y la variable B tiene 20, entonces -

Mostrar ejemplos

Operador Descripción Ejemplo
+ (Adición) Agrega valores a ambos lados del operador. A + B dará 30
- (Resta) Resta el operando de la derecha del operando de la izquierda. A - B dará -10
* (Multiplicación) Multiplica los valores a ambos lados del operador. A * B dará 200
/ (División) Divide el operando de la izquierda por el operando de la derecha. B / A dará 2
% (Módulo) Divide el operando de la izquierda por el operando de la derecha y devuelve el resto. B% A dará 0

Los operadores de comparación

A continuación se muestran los operadores de asignación admitidos por el lenguaje de PowerShell:

Suponga que la variable entera A tiene 10 y la variable B tiene 20, entonces -

Mostrar ejemplos

Operador Descripción Ejemplo
eq (igual) Compara dos valores para que sean iguales o no. A -eq B dará falso
ne (no es igual) Compara dos valores para que no sean iguales. A -ne B dará verdad
gt (mayor que) Compara el primer valor para que sea mayor que el segundo. B -gt A dará verdadero
ge (mayor o igual que) Compara el primer valor para que sea mayor o igual que el segundo. B -ge A dará verdad
lt (menos que) Compara el primer valor para que sea menor que el segundo. B -lt A dará falso
le (menor o igual a) Compara el primer valor para que sea menor o igual que el segundo. B -le A dará falso

Los operadores de asignación

A continuación se muestran los operadores de asignación admitidos por el lenguaje de PowerShell:

Mostrar ejemplos

Operador Descripción Ejemplo
= Operador de asignación simple. Asigna valores de los operandos del lado derecho al operando del lado izquierdo. C = A + B asignará el valor de A + B en C
+ = Agregar operador de asignación AND. Agrega operando derecho al operando izquierdo y asigna el resultado al operando izquierdo. C + = A es equivalente a C = C + A
- = Restar operador de asignación AND. Resta el operando derecho del operando izquierdo y asigna el resultado al operando izquierdo. C - = A es equivalente a C = C - A

Los operadores lógicos

La siguiente tabla enumera los operadores lógicos:

Suponga que las variables booleanas A son verdaderas y la variable B es falsa, entonces -

Mostrar ejemplos

Operador Descripción Ejemplo
Y (lógico y) Operador llamado lógico AND. Si ambos operandos son distintos de cero, la condición se cumple. (A -AND B) es falso
O (lógico o) Operador OR lógico llamado. Si alguno de los dos operandos es distinto de cero, la condición se cumple. (A -OR B) es cierto
NO (lógico no) Operador llamado lógico NOT. Úselo para revertir el estado lógico de su operando. Si una condición es verdadera, entonces el operador lógico NOT hará que sea falsa. -NO (A -AND B) es cierto

Operadores varios

A continuación, se muestran varios operadores importantes compatibles con el lenguaje PowerShell:

Mostrar ejemplos

Operador Descripción Ejemplo
> (Operador de redireccionamiento) Operador redireccional. Asigna la salida que se imprimirá en el archivo / dispositivo de salida redirigido. dir> test.log imprimirá la lista de directorios en el archivo test.log

Puede haber una situación en la que necesite ejecutar un bloque de código varias veces. En general, las sentencias se ejecutan secuencialmente: la primera sentencia de una función se ejecuta primero, seguida de la segunda, y así sucesivamente.

Los lenguajes de programación proporcionan varias estructuras de control que permiten rutas de ejecución más complicadas.

UN loop declaración nos permite ejecutar una declaración o un grupo de declaraciones varias veces y la siguiente es la forma general de una declaración de bucle en la mayoría de los lenguajes de programación:

El lenguaje de programación de PowerShell proporciona los siguientes tipos de bucle para manejar los requisitos de bucle. Haga clic en los siguientes enlaces para verificar su detalle.

No Señor. Bucle y descripción
1 en bucle

Ejecuta una secuencia de declaraciones varias veces y abrevia el código que administra la variable de ciclo.

2 forEach bucle

Mejorado para bucle. Esto se usa principalmente para atravesar la colección de elementos, incluidas las matrices.

3 while loop

Repite una declaración o un grupo de declaraciones mientras una condición determinada es verdadera. Prueba la condición antes de ejecutar el cuerpo del bucle.

4 hacer ... mientras bucle

Como una instrucción while, excepto que prueba la condición al final del cuerpo del bucle.

Las estructuras de toma de decisiones tienen una o más condiciones para ser evaluadas o probadas por el programa, junto con una declaración o declaraciones que se ejecutarán si se determina que la condición es verdadera y, opcionalmente, otras declaraciones que se ejecutarán si se determina la condición. ser falso.

A continuación se muestra la forma general de una estructura de toma de decisiones típica que se encuentra en la mayoría de los lenguajes de programación:

El lenguaje de secuencias de comandos de PowerShell proporciona los siguientes tipos de declaraciones para la toma de decisiones. Haga clic en los siguientes enlaces para verificar su detalle.

No Señor. Declaración y descripción
1 si declaración

Un if statement consta de una expresión booleana seguida de una o más declaraciones.

2 declaración if ... else

Un if statement puede ir seguido de un opcional else statement, que se ejecuta cuando la expresión booleana es falsa.

3 declaración if anidada

Puedes usar uno if o elseif declaración dentro de otra if o elseif declaración (es).

4 declaración de cambio

UN switch La declaración permite probar la igualdad de una variable con una lista de valores.

PowerShell proporciona una estructura de datos, la array, que almacena una colección secuencial de tamaño fijo de elementos de cualquier tipo. Una matriz se usa para almacenar una colección de datos, pero a menudo es más útil pensar en una matriz como una colección de variables u objetos.

En lugar de declarar variables individuales, como número0, número1, ... y número99, declaras una variable de matriz como números y usas números [0], números [1] y ..., números [99] para representar variables individuales.

Este tutorial presenta cómo declarar variables de matriz, crear matrices y procesar matrices utilizando variables indexadas.

Declaración de variables de matriz

Para usar una matriz en un programa, debe declarar una variable para hacer referencia a la matriz y puede especificar el tipo de matriz a la que la variable puede hacer referencia. Aquí está la sintaxis para declarar una variable de matriz:

Sintaxis

$A = 1, 2, 3, 4
or
$A = 1..4

Note- Por defecto, el tipo de objetos de la matriz es System.Object. El método GetType () devuelve el tipo de matriz. Se puede pasar el tipo.

Ejemplo

Los siguientes fragmentos de código son ejemplos de esta sintaxis:

[int32[]]$intA = 1500,2230,3350,4000

$A = 1, 2, 3, 4
$A.getType()

Esto producirá el siguiente resultado:

Salida

IsPublic    IsSerial    Name                        BaseType                     
--------    --------    ----                        --------                     
True        True        Object[]                    System.Array

Se accede a los elementos de la matriz a través del index. Los índices de matriz están basados ​​en 0; es decir, empiezan de 0 aarrayRefVar.length-1.

Ejemplo

La siguiente declaración declara una variable de matriz, myList, crea una matriz de 10 elementos de tipo doble y asigna su referencia a myList:

$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123

La siguiente imagen representa la matriz myList. Aquí, myList contiene diez valores dobles y los índices van de 0 a 9.

Procesamiento de matrices

Al procesar elementos de matriz, a menudo usamos for bucle o foreach bucle porque todos los elementos de una matriz son del mismo tipo y se conoce el tamaño de la matriz.

Ejemplo

Aquí hay un ejemplo completo que muestra cómo crear, inicializar y procesar matrices:

$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123

write-host("Print all the array elements")
$myList

write-host("Get the length of array")
$myList.Length

write-host("Get Second element of array")
$myList[1]

write-host("Get partial array")
$subList = $myList[1..3]

write-host("print subList")
$subList

write-host("using for loop")
for ($i = 0; $i -le ($myList.length - 1); $i += 1) {
   $myList[$i]
}

write-host("using forEach Loop")
foreach ($element in $myList) {
   $element
}

write-host("using while Loop")
$i = 0
while($i -lt 4) {
   $myList[$i];
   $i++
}

write-host("Assign values")
$myList[1] = 10
$myList

Esto producirá el siguiente resultado:

Salida

Print all the array elements
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
Get the length of array
10
Get Second element of array
4.5
Get partial array
print subList
4.5
3.3
13.2
using for loop
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
using forEach Loop
5.6
4.5
3.3
13.2
4
34.33
34
45.45
99.993
11123
using while Loop
5.6
4.5
3.3
13.2
Assign values
5.6
10
3.3
13.2
4
34.33
34
45.45
99.993
11123

Ejemplos de métodos de matrices

Aquí hay un ejemplo completo que muestra operaciones en matrices usando sus métodos

$myList = @(0..4)

write-host("Print array")
$myList

$myList = @(0..4)

write-host("Assign values")
$myList[1]  = 10
$myList

Esto producirá el siguiente resultado:

Salida

Clear array
Print array
0
1
2
3
4
Assign values
0
10
2
3
4

Hashtable almacena pares clave / valor en una tabla hash. Cuando usa una tabla hash, especifica un objeto que se usa como clave y el valor que desea vincular a esa clave. Generalmente usamos String o números como claves.

Este tutorial presenta cómo declarar variables de tabla hash, crear tablas hash y procesar tablas hash utilizando sus métodos.

Declaración de variables hashtable

Para usar una tabla hash en un programa, debe declarar una variable para hacer referencia a la tabla hash. Aquí está la sintaxis para declarar una variable de tabla hash:

Sintaxis

$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"}
or
$hash = @{}

Note- Los diccionarios pedidos se pueden crear utilizando una sintaxis similar. Los diccionarios ordenados mantienen el orden en el que se agregan las entradas, mientras que las tablas hash no.

Ejemplo

Los siguientes fragmentos de código son ejemplos de esta sintaxis:

$hash = [ordered]@{ ID = 1; Shape = "Square"; Color = "Blue"}

Imprime la tabla hash.

$hash

Salida

Name                           Value    
----                           -----                                                    
ID                             1                                                        
Color                          Blue                                                     
Shape                          Square

Se accede a los valores de la tabla hash a través del keys.

> $hash["ID"]
 1

Procesando Hashtable

La notación de puntos se puede utilizar para acceder a claves o valores de tablas hash.

> $hash.keys
ID
Color
Shape

> $hash.values
1
Blue
Square

Ejemplo

Aquí hay un ejemplo completo que muestra cómo crear, inicializar y procesar la tabla hash:

$hash = @{ ID = 1; Shape = "Square"; Color = "Blue"}

write-host("Print all hashtable keys")
$hash.keys

write-host("Print all hashtable values")
$hash.values

write-host("Get ID")
$hash["ID"]

write-host("Get Shape")
$hash.Number

write-host("print Size")
$hash.Count

write-host("Add key-value")
$hash["Updated"] = "Now"

write-host("Add key-value")
$hash.Add("Created","Now")

write-host("print Size")
$hash.Count

write-host("Remove key-value")
$hash.Remove("Updated")

write-host("print Size")
$hash.Count

write-host("sort by key")
$hash.GetEnumerator() | Sort-Object -Property key

Esto producirá el siguiente resultado:

Salida

Print all hashtable keys
ID
Color
Shape
Print all hashtable values
1
Blue
Square
Get ID
1
Get Shape
print Size
3
Add key-value
Add key-value
print Size
5
Remove key-value
print Size
4
sort by key

Name                           Value                                                                                                   
----                           -----                                                                                                   
Color                          Blue                                                                                                    
Created                        Now                                                                                                     
ID                             1                                                                                                       
Shape                          
Square

Una expresión regular es una secuencia especial de caracteres que le ayuda a hacer coincidir o encontrar otras cadenas o conjuntos de cadenas, utilizando una sintaxis especializada contenida en un patrón. Se pueden utilizar para buscar, editar o manipular texto y datos.

Aquí está la tabla que enumera toda la sintaxis de metacaracteres de expresión regular disponible en PowerShell:

Subexpresión Partidos
^ Coincide con el comienzo de la línea.
PS Coincide con el final de la línea.
. Coincide con cualquier carácter, excepto la nueva línea. Utilizandom La opción también le permite coincidir con la nueva línea.
[...] Coincide con cualquier carácter individual entre paréntesis.
[^ ...] Coincide con cualquier carácter individual que no esté entre corchetes.
\UN Comienzo de toda la cadena.
\ z Fin de toda la cadena.
\ Z Fin de toda la cadena excepto el terminador de línea final permitido.
re* Coincide con 0 o más apariciones de la expresión anterior.
re + Coincide con 1 o más de lo anterior.
¿re? Coincide con 0 o 1 aparición de la expresión anterior.
re {n} Coincide exactamente con n número de apariciones de la expresión anterior.
re {n,} Coincide con no más apariciones de la expresión anterior.
re {n, m} Coincide con al menos n y como máximo m apariciones de la expresión anterior.
a | segundo Coincide con a o b.
(re) Agrupa expresiones regulares y recuerda el texto coincidente.
(?: re) Agrupa expresiones regulares sin recordar el texto coincidente.
(?> re) Coincide con el patrón independiente sin retroceso.
\ w Coincide con los caracteres de la palabra.
\ W Coincide con los caracteres que no son palabras.
\ s Coincide con el espacio en blanco. Equivalente a [\ t \ n \ r \ f].
\ S Coincide con el espacio no en blanco.
\re Coincide con los dígitos. Equivalente a [0-9].
\RE Coincide con los no dígitos.
\UN Coincide con el comienzo de la cadena.
\ Z Coincide con el final de la cuerda. Si existe una nueva línea, coincide justo antes de la nueva línea.
\ z Coincide con el final de la cuerda.
\GRAMO Coincide con el punto donde terminó el último partido.
\norte Referencia posterior al grupo de captura número "n".
\segundo Coincide con los límites de la palabra cuando está fuera de los corchetes. Coincide con el retroceso (0x08) cuando está dentro de los corchetes.
\SEGUNDO Coincide con los límites que no son palabras.
\ n, \ t, etc. Coincide con nuevas líneas, retornos de carro, pestañas, etc.
\ Q Escape (entre comillas) todos los caracteres hasta \ E.
\MI Termina la cita comenzada con \ Q.

A continuación, se muestran ejemplos completos que muestran cómo usar expresiones regulares en PowerShell;

No Señor. Coincidencia y descripción
1 Coincidir con personajes

Ejemplo de caracteres de expresión regular admitidos.

2 Coincidir clases de personajes

Ejemplo de clases de caracteres admitidas.

3 Cuantificadores de coincidencias

Ejemplo de cuantificadores compatibles.

El operador de comillas invertidas (`) también se denomina operador de ajuste de palabras. Permite escribir un comando en varias líneas. También se puede usar para una nueva línea (`n) o tabulación (` t) en oraciones. Vea los ejemplos a continuación:

Ejemplo 1

Get-Service * | Sort-Object ServiceType `
| Format-Table Name, ServiceType, Status -AutoSize

Se convertirá

Get-Service * | Sort-Object ServiceType | Format-Table Name, ServiceType, Status -AutoSize

Verifique la salida como

Name                                                   ServiceType  Status
----                                                   -----------  ------
MSSQLServerADHelper100                             Win32OwnProcess Stopped
ntrtscan                                           Win32OwnProcess Running
...

Ejemplo 2

Uso de nueva línea y pestaña.

> Write-host "Title Subtitle"
Title Subtitle

> Write-host "Title `nSubtitle"
Title 
Subtitle

> Write-host "Title `tSubtitle"
Title   Subtitle

Powershell admite tres tipos de soportes.

  • Parenthesis brackets. − ()

  • Braces brackets. − {}

  • Square brackets. − []

Paréntesis

Este tipo de soportes se utiliza para

  • pasar argumentos

  • adjuntar varios conjuntos de instrucciones

  • resolver ambigüedad

  • crear matriz

Ejemplo

> $array = @("item1", "item2", "item3")
 
> foreach ($element in $array) { $element }
item1
item2
item3

Soportes de tirantes

Este tipo de soportes se utiliza para

  • adjuntar declaraciones

  • comandos de bloque

Ejemplo

$x = 10

if($x -le 20){
   write-host("This is if statement")
}

Esto producirá el siguiente resultado:

Salida

This is if statement.

Corchetes

Este tipo de soportes se utiliza para

  • acceso a la matriz

  • acceso a tablas hash

  • filtrar usando expresión regular

Ejemplo

> $array = @("item1", "item2", "item3")
 
> for($i = 0; $i -lt $array.length; $i++){ $array[$i] }
item1
item2
item3
 
>Get-Process [r-s]*
 Handles    NPM(K)     PM(K)    WS(K)   VM(M)   CPU(s)     Id    ProcessName
-------    ------     -----     -----   -----   ------     --    -----------  
    320        72     27300     33764    227     3.95    4028    SCNotification 
   2298        77     57792     48712    308             2884    SearchIndexer
   ...

El alias de PowerShell es otro nombre para el cmdlet o para cualquier elemento de comando.

Creando alias

Utilizar New-Aliascmdlet para crear un alias. En el siguiente ejemplo, hemos creado una ayuda de alias para el cmdlet Get-Help.

New-Alias -Name help -Value Get-Help

Ahora invoque el alias.

help Get-WmiObject -Detailed

Verá el siguiente resultado.

NAME
   Get-WmiObject
    
SYNOPSIS
   Gets instances of Windows Management Instrumentation (WMI) classes or information about the available classes.    
    
SYNTAX
   Get-WmiObject [
...

Obtener alias

Utilizar get-alias cmdlet para obtener todos los alias presentes en la sesión actual de powershell.

Get-Alias

Verá el siguiente resultado.

CommandType     Name                     Definition
-----------     ----                     ----------  
Alias           %                        ForEach-Object
Alias           ?                        Where-Object
Alias           ac                       Add-Content
Alias           asnp                     Add-PSSnapIn 
...
Impresión