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 -
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 -
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:
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 -
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:
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