¿Qué son las variables automáticas en PowerShell?

Que Son Las Variables Automaticas En Powershell



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.