de PowerShell “ Variables automáticas ” son esenciales para la gestión del sistema, la automatización y las actividades de secuencias de comandos. Estas variables están integradas por el tiempo de ejecución de PowerShell y sirven como marcadores de posición para almacenar y hacer referencia a información específica durante la ejecución de un script o comando. Comprender y utilizar estas variables automáticas de manera efectiva puede mejorar en gran medida la eficiencia y la funcionalidad de los scripts de PowerShell.
Este artículo tiene como objetivo explorar el concepto de 'Variables automáticas' en PowerShell, su importancia y cómo se pueden aprovechar en varios escenarios.
¿Qué son las variables automáticas en PowerShell?
Para empezar, profundicemos en la definición de “ Variables automáticas ”. Estas variables están predefinidas y PowerShell las crea automáticamente durante la ejecución del script. Estos sirven para diferentes propósitos, incluido el suministro de información sobre el sistema, argumentos de línea de comandos, detalles relacionados con scripts y mucho más.
PowerShell ofrece varias 'Variables automáticas' y cada una de ellas tiene un propósito distinto en la ejecución de scripts. Estas variables son, como sigue:
1. $PSVersionTable
Una de las variables automáticas fundamentales en PowerShell es “ $PSVersionTable ”. Esta variable permite a los desarrolladores de scripts determinar la versión de PowerShell que se está utilizando, lo que puede ser crucial al considerar la compatibilidad y disponibilidad de ciertas características y funcionalidades.
Las siguientes propiedades están asociadas a esta variable:
Versión PS: Devuelve el número de versión de PowerShell.
Edición PS: Para PowerShell 4 y versiones anteriores, así como PowerShell 5.1 en versiones de Windows con funciones completas, esta propiedad tiene el valor 'Escritorio'. Esta característica tiene el valor de Core para PowerShell 6 y versiones posteriores, así como Windows PowerShell 5.1 para ediciones de bajo impacto como Windows Nano Server o Windows IoT.
ID de GitCommit: Obtiene el ID de confirmación de GitHub de los archivos de origen.
TÚ: Registra información sobre el sistema informático que utiliza PowerShell.
Plataforma: Devuelve la plataforma de soporte del sistema operativo. Unix tiene valor en Linux y macOS. Consulte $IsMacOs y $IsLinux.
Versiones compatibles con PS: Se devuelven las versiones de PowerShell que son compatibles con la versión actual.
Versión del protocolo PSRemoting: Devuelve el número de versión del protocolo de administración remota de PowerShell.
Versión de serialización: Devuelve la versión del método de serialización.
Versión WSManStack: Devuelve el número de versión de la pila de WS-Management.
$ PSVersionTable
2. $ Argumentos
Otra variable automática esencial en PowerShell es “ $ Argumentos ”, que contiene una matriz de argumentos de línea de comandos pasados a un script o función. Esta variable permite a los desarrolladores procesar y manipular dinámicamente los argumentos proporcionados dentro de sus scripts.
Al definir una función, puede usar la palabra clave 'param' para declarar los parámetros o puede agregar una lista de parámetros separados por comas entre paréntesis después del nombre de la función. La variable '$Args' de una acción de evento almacena objetos que sirven como marcadores de posición para los parámetros de evento del evento que se está manejando:
para cada ( $ argumento en $ Argumentos ) {Host de escritura $ argumento
}
3. $MiInvocación
El ' $MiInvocación La variable ” brinda datos de fondo cruciales sobre el script o procedimiento que se está ejecutando actualmente. Ofrece propiedades como el nombre del script, el número de línea del script y si el script se ejecuta de forma interactiva o no interactiva. Estas propiedades ayudan a los desarrolladores de secuencias de comandos a implementar la lógica de bifurcación, definir mecanismos de manejo de errores o generar informes y registros significativos:
$ miinvocación
4. $Error
Una variable automática menos conocida” $Error ”, captura efectivamente cualquier mensaje de error o excepción que ocurra durante la ejecución del script. Se puede acceder a '$Error' para recuperar detalles de errores específicos, como mensajes de excepción, seguimientos de pila o códigos de error, lo que permite un análisis y una depuración detallados.
El error más reciente está representado por el primer objeto de error en la matriz ' $Error[0] “. Puede usar la opción común ErrorAction con el valor 'Ignorar' para evitar que los errores se agreguen a la matriz '$Error'.
Supongamos que escribimos un comando preciso:
ip [ onfig
Ahora bien, si ingresamos al cmdlet “$Error”:
$ Error
5. $PSCmdlet
Cuando se trabaja con módulos de PowerShell, la variable automática “ $PSCmdlet ” entra en vigor. Esta variable proporciona acceso a la instancia actual del cmdlet o función que se invoca, lo que facilita la interacción directa con sus propiedades y métodos.
Con “$PSCmdlet”, los desarrolladores de scripts avanzados pueden ajustar y mejorar el comportamiento de los módulos ampliando o modificando las funcionalidades integradas. Puede usar los atributos y métodos del objeto en su cmdlet o código de función en respuesta a los criterios de uso:
función tipo de psCmdlet {[ cmdletBinding ( ) ] parámetro ( )
eco 'tipo de ` $psCmdlet es $($psCmdlet.GetType() .Nombre completo)'
}
tipo de psCmdlet
Además de las variables antes mencionadas, PowerShell abarca variables automáticas como $HOME, $PROFILE, $PWD y muchas más, que sirven para diferentes propósitos, como acceder a la entrada, rastrear errores, recuperar información del entorno, administrar parámetros y mucho más. Estas variables se enumeran a continuación:
Variables automáticas | Descripción |
$$ | Contiene el último token de la línea anterior recibido por la sesión de PowerShell. |
$? | Almacena el estado de ejecución del último comando. |
$^ | Contiene el primer token de la última línea recibida por la sesión. |
$_ | Representa el objeto actual en la canalización. |
$ConsoleFileName | Contiene la ruta del archivo de consola (.psc1) utilizado más recientemente en la sesión. |
$EnabledExperimentalFeatures | Contiene una lista de las funciones experimentales habilitadas. |
$Evento | Contiene un objeto 'PSEventArgs' que representa el evento que se está procesando. |
$EventArgs | Contiene el primer argumento de evento del evento que se está procesando. |
$EventoSuscriptor | Representa el suscriptor del evento que se está procesando. |
$Contexto de ejecución | Representa el contexto de ejecución del host de PowerShell. |
$falso | Representa el valor booleano 'Falso'. |
$por cada uno | Contiene el enumerador de un bucle 'for-Each'. |
$HOGAR | Contiene la ruta completa del directorio de inicio del usuario. |
$Anfitrión | Representa la aplicación de host actual para PowerShell. |
$entrada | Sirve como enumerador para todas las entradas pasadas a una función o secuencia de comandos. |
$IsCoreCLR | Indica si la sesión se ejecuta en .NET Core Runtime (CoreCLR). |
$EsLinux | Indica si la sesión se está ejecutando en un sistema operativo Linux. |
$IsMacOS | Indica si la sesión se está ejecutando en un sistema operativo MacOS. |
$EsWindows | Identifica si la sesión se está ejecutando en un sistema operativo Windows. |
$LASTEXITCODE | Almacena el código de salida del último programa nativo o script de PowerShell. |
$coincidencias | Contiene cadenas coincidentes de los operadores '-match' y '-notmatch'. |
$NestedPromptLevel | Realiza un seguimiento del nivel de solicitud actual en comandos anidados o escenarios de depuración. |
$ nulo | Representa un valor nulo o vacío. |
$PID | Contiene el identificador de proceso (PID) de la sesión de PowerShell. |
$PERFIL | Contiene la ruta completa del perfil de PowerShell para el usuario actual y la aplicación host. |
$PSBoundParameters | Contiene un diccionario de parámetros pasados a un script o función y sus valores. |
$PSCommandPath | Contiene la ruta completa y el nombre de archivo del script que se está ejecutando. |
$PSCultura | Refleja la cultura del espacio de ejecución actual de PowerShell. |
$PSEdition | Contiene la información de la edición de PowerShell. |
$PSHOME | Contiene la ruta completa del directorio de instalación de PowerShell. |
$PSItem | Igual que $_, representa el objeto actual en la canalización. |
$PSScriptRoot | Contiene la ruta completa del directorio principal del script en ejecución. |
$PSSenderInfo | Contiene información sobre el usuario que inició la PSSession. |
$PSUICultura | Refleja la referencia cultural de la interfaz de usuario (UI) configurada en el sistema operativo. |
$PWD | Representa el directorio de trabajo actual de la sesión de PowerShell. |
$remitente | Contiene el objeto que generó un evento. |
$ShellId | Contiene el identificador del shell actual. |
$StackTrace | Almacena el seguimiento de la pila del error más reciente. |
$cambiar | Contiene el enumerador de la instrucción 'Switch'. |
$esto | Hace referencia a la instancia de una clase en bloques de secuencias de comandos que amplían las clases. |
$verdadero | Representa el valor booleano 'Verdadero'. |
Todas las 'variables automáticas' en PowerShell se pueden encontrar ejecutando el siguiente comando:
Obtener variable
Conclusión
“ Variables automáticas ” forman la columna vertebral de las secuencias de comandos de PowerShell, lo que permite a los desarrolladores obtener información sobre el sistema, los argumentos de la línea de comandos, el contexto de ejecución de secuencias de comandos y más. Al aprovechar variables automáticas como '$PSVersionTable', '$Args', '$MyInvocation', '$Error' y otras, los desarrolladores de scripts de PowerShell pueden crear prácticas de administración de sistemas optimizadas.