about_Automatic_Variables
Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0
Insertar la introducción aquí.
TEMA
about_Automatic_Variables
DESCRIPCIÓN BREVE
Describe las variables que almacenan información de estado de Windows PowerShell. Windows PowerShell crea y mantiene estas variables.
DESCRIPCIÓN LARGA
Esta es una lista de las variables automáticas en Windows PowerShell:
$$
Contiene el último token de la última línea que la sesión ha recibido.
$?
Contiene el estado de ejecución de la última operación. Contiene TRUE si la última operación se realizó correctamente y FALSE si se produjo un error.
$^
Contiene el primer token de la última línea que la sesión ha recibido.
$_
Igual que $PSItem. Contiene el objeto actual en el objeto de canalización. Puede utilizar esta variable en los comandos que realizan una acción en todos los objetos o en los objetos seleccionados de una canalización.
$ARGS
Contiene una matriz de los parámetros no declarados o los valores de parámetros que se pasan a una función, un script o un bloque de script. Al crear una función, se pueden declarar los parámetros mediante la palabra clave param o si se agrega una lista de parámetros separados por comas entre paréntesis después del nombre de función.
En una acción de evento, la variable $Args contiene objetos que representan los argumentos de evento del evento que se está procesando. Esta variable se rellena solo dentro del bloque Action de un comando de registro de eventos. El valor de esta variable también puede encontrarse en la propiedad SourceArgs del objeto PSEventArgs (System.Management.Automation.PSEventArgs) que devuelve Get-Event.
$CONSOLEFILENAME
Contiene la ruta de acceso del archivo de consola (.psc1) que se utilizó más recientemente en la sesión. Esta variable se rellena al iniciar Windows PowerShell con el parámetro PSConsoleFile o al usar el cmdlet Export-Console para exportar nombres de complementos a un archivo de consola.
Cuando se usa el cmdlet Export-Console sin parámetros, actualiza automáticamente el archivo de consola que se utilizó más recientemente en la sesión. Puede utilizar esta variable automática para determinar el archivo que se actualizará.
$ERROR
Contiene una matriz de objetos de error que representan los errores más recientes. El error más reciente es el primer objeto de error de la matriz ($Error[0]).
Para evitar que un error se agregue a la matriz $Error, utilice el parámetro común ErrorAction con un valor de Ignore. Para más información, consulte about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216).
$EVENT
Contiene un objeto PSEventArgs que representa el evento que se está procesando. Esta variable se rellena solo dentro del bloque Action de un comando de registro de eventos, como Register-ObjectEvent. El valor de esta variable es el mismo objeto que devuelve el cmdlet Get-Event. Por lo tanto, puede utilizar las propiedades de la variable $Event, como $Event.TimeGenerated, en un bloque de script Action.
$EVENTARGS
Contiene un objeto que representa el primer argumento de evento que se deriva del elemento EventArgs del evento que se está procesando. Esta variable se rellena solo dentro del bloque Action de un comando de registro de eventos. El valor de esta variable también se puede encontrar en la propiedad SourceEventArgs del objeto PSEventArgs (System.Management.Automation.PSEventArgs) que devuelve Get-Event.
$EVENTSUBSCRIBER
Contiene un objeto PSEventSubscriber que representa el suscriptor de evento del evento que se está procesando. Esta variable se rellena solo dentro del bloque Action de un comando de registro de eventos. El valor de esta variable es el mismo objeto que devuelve el cmdlet Get-EventSubscriber.
$EXECUTIONCONTEXT
Contiene un objeto EngineIntrinsics que representa el contexto de ejecución del host de Windows PowerShell. Puede utilizar esta variable para buscar los objetos de ejecución que están disponibles para los cmdlets.
$FALSE
Contiene FALSE. Puede usar esta variable para representar FALSE en comandos y scripts, en lugar de utilizar la cadena "false". La cadena puede interpretarse como TRUE si se convierte en una cadena no vacía o un entero distinto de cero.
$FOREACH
Contiene el enumerador (y no los valores resultantes) de un bucle ForEach. Puede utilizar las propiedades y los métodos de los enumeradores en el valor de la variable $ForEach. Esta variable solo existe mientras se ejecuta el bucle ForEach; se elimina cuando se completa el bucle. Para obtener información detallada, consulte about_ForEach.
$HOME
Contiene la ruta completa del directorio principal del usuario. Esta variable equivale a las variables de entorno %homedrive%%homepath%, normalmente C:\Users\<NombredeUsuario>.
$HOST
Contiene un objeto que representa la aplicación host actual para Windows PowerShell. Puede utilizar esta variable para representar el host actual en comandos o para mostrar o cambiar las propiedades del host, como $Host.version o $Host.CurrentCulture o $host.ui.rawui.setbackgroundcolor("Red").
$INPUT
Contiene un enumerador que enumera todas las entradas que se pasan a una función. La variable $input solo está disponible para las funciones y los bloques de scripts (que son funciones sin nombre). En el bloque Process de una función, la variable $input enumera el objeto que está actualmente en la canalización. Cuando finaliza el bloque Process, no hay ningún objeto restante en la canalización, por lo que la variable $input enumera una colección vacía. Si la función no tiene un bloque Process, la variable $input en el bloque End enumera la colección de todas las entradas de la función.
$LASTEXITCODE
Contiene el código de salida del último programa basado en Windows que se ejecutó.
$MATCHES
La variable $Matches funciona con los operadores -match y -notmatch. Cuando se envía una entrada escalar a los operadores -match o -notmatch y uno de ellos detecta una coincidencia, se devuelve un valor booleano y se rellena la variable automática $Matches con una tabla hash de los valores de cadena coincidentes. Para más información sobre el operador -match, consulte about_comparison_operators.
$MYINVOCATION
Contiene información sobre el comando actual, como el nombre, los parámetros, los valores de parámetro e información sobre cómo se inició, se llamó o se invocó el comando, como por ejemplo el nombre del script que llamó al comando actual.
$MyInvocation solo se rellena para scripts, funciones y bloques de scripts. Puede utilizar la información en el objeto System.Management.Automation.InvocationInfo que $MyInvocation devuelve en el script actual, como la ruta de acceso y el nombre del script ($MyInvocation.MyCommand.Path) o el nombre de una función ($MyInvocation.MyCommand.Name) para identificar el comando actual. Esto es especialmente útil para buscar el nombre del script actual.
A partir de Windows PowerShell 3.0, $MyInvocation tiene las siguientes propiedades nuevas.
-- PSScriptRoot: Contains the full path to the script that invoked the
current command. The value of this property is populated only when
the caller is a script.
-- PSCommandPath: Contains the full path and file name of the script that
invoked the current command. The value of this property is populated
only when the caller is a script.
A diferencia de las variables automáticas $PSScriptRoot y $PSCommandPath, las propiedades PSScriptRoot y PSCommandPath de la variable automática $MyInvocation contienen información sobre el invocador o un script de llamada, no el script actual.
$NESTEDPROMPTLEVEL
Contiene el nivel de símbolo del sistema actual. Un valor de 0 indica el nivel del símbolo del sistema original. El valor se incrementa cuando se especifica un nivel anidado y disminuye cuando se sale de él.
Por ejemplo, Windows PowerShell presenta un símbolo del sistema anidado cuando se utiliza el método $Host.EnterNestedPrompt. Windows PowerShell también presenta un símbolo del sistema anidado cuando llega a un punto de interrupción en el depurador de Windows PowerShell.
Cuando se entra en un símbolo del sistema anidado, Windows PowerShell pone en pausa el comando actual, guarda el contexto de ejecución e incrementa el valor de la variable $NestedPromptLevel. Para crear otros símbolos del sistema anidados (hasta 128 niveles) o para volver al símbolo del sistema original, complete el comando o escriba "exit".
La variable $NestedPromptLevel le ayuda a conocer el nivel del símbolo del sistema. Puede crear un símbolo del sistema de Windows PowerShell alternativo que incluya este valor para que siempre esté visible.
$NULL
$null es una variable automática que contiene un valor NULL o un valor vacío. Puede utilizar esta variable para representar un valor ausente o no definido en comandos y scripts.
Windows PowerShell trata $null como un objeto con un valor, es decir, como un marcador de posición explícito, por lo que puede usar $null para representar un valor vacío en una serie de valores.
Por ejemplo, si $null se incluye en una colección, se cuenta como uno de los objetos.
C:\PS> $a = ".dir", $null, ".pdf"
C:\PS> $a.count
3
Si canaliza la variable $null al cmdlet ForEach-Object, se genera un valor para $null, igual que sucede con los demás objetos.
PS C:\ps-test> ".dir", "$null, ".pdf" | Foreach {"Hello"}
Hello
Hello
Hello
Como resultado, no puede utilizar $null como "ningún valor de parámetro". Un valor de parámetro de $null reemplaza el valor de parámetro predeterminado.
Sin embargo, como Windows PowerShell trata la variable $null como un marcador de posición, puede usarla en scripts como el siguiente, donde no funcionaría si $null se ignorase.
$calendar = @($null, $null, “Meeting”, $null, $null, “Team Lunch”, $null)
$days = Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
$currentDay = 0
foreach($day in $calendar)
{
if($day –ne $null)
{
"Appointment on $($days[$currentDay]): $day"
}
$currentDay++
}
Appointment on Tuesday: Meeting
Appointment on Friday: Team lunch
$OFS
$OFS es una variable especial que almacena una cadena que se quiere utilizar como un separador de campos de salida. Utilice esta variable cuando convierte una matriz en una cadena. De forma predeterminada, el valor de $OFS es " ", pero puede cambiar el valor de $OFS en la sesión si especifica $OFS="<valor>". Si espera el valor predeterminado de " " en el script, el módulo o los resultados de la configuración, asegúrese de que el valor predeterminado de $OFS no ha cambiado en otro lugar del código.
Ejemplos:
PS> $a="1","2","3","4"
PS> $a
1
2
3
4
PS> [string]$a
1 2 3 4
PS> $OFS="";[string]$a
1234
PS> $OFS=",";[string]$a
1,2,3,4
PS> $OFS="--PowerShellRocks--";[string]$a
1--PowerShellRocks--2--PowerShellRocks--3--PowerShellRocks--4
PS> $OFS="`n`n";[string]$a
1
2
3
4
$PID
Contiene el identificador de proceso (PID) del proceso que hospeda la sesión Windows PowerShell actual.
$PROFILE
Contiene la ruta completa del perfil de Windows PowerShell del usuario actual y la aplicación host actual. Puede utilizar esta variable para representar el perfil en los comandos. Por ejemplo, puede utilizarla en un comando para determinar si se ha creado un perfil:
test-path $profile
O bien, puede utilizarla en un comando para crear un perfil:
new-item -type file -path $pshome -force
También se puede utilizar en un comando para abrir el perfil en el Bloc de notas:
notepad $profile
$PSBOUNDPARAMETERS
Contiene un diccionario de los parámetros que se pasan a un script o una función y sus valores actuales. Esta variable tiene un valor solo en un ámbito donde se declaran parámetros, como un script o una función. Puede usarla para mostrar o cambiar los valores actuales de parámetros o para pasar valores de parámetro a otra función u otro script.
Por ejemplo:
function Test {
param($a, $b)
# Display the parameters in dictionary format.
$PSBoundParameters
# Call the Test1 function with $a and $b.
test1 @PSBoundParameters
}
$PSCMDLET
Contiene un objeto que representa el cmdlet o la función avanzada que se está ejecutando.
Puede utilizar las propiedades y los métodos del objeto en el código de la función o el cmdlet para responder a las condiciones de uso. Por ejemplo, la propiedad ParameterSetName contiene el nombre del conjunto de parámetros que se usa y el método ShouldProcess agrega dinámicamente los parámetros WhatIf y Confirm al cmdlet.
Para más información sobre la variable automática $PSCmdlet, consulte about_Functions_Advanced.
$PSCOMMANDPATH
Contiene la ruta de acceso completa y el nombre de archivo del script que se está ejecutando. Esta variable es válida en todos los scripts.
$PSCULTURE
Contiene el nombre de la referencia cultural actualmente en uso en el sistema operativo. La referencia cultural determina el formato de presentación de elementos como números, divisas y fechas. Este es el valor de la propiedad System.Globalization.CultureInfo.CurrentCulture.Name del sistema. Para obtener el objeto System.Globalization.CultureInfo del sistema, use el cmdlet Get-Culture.
$PSDEBUGCONTEXT
Durante la depuración, esta variable contiene información sobre el entorno de depuración. De lo contrario, contiene un valor NULL. Como resultado, se puede utilizar para indicar si el depurador tiene control. Cuando se rellena, contiene un objeto de PsDebugContext que tiene las propiedades Breakpoints y InvocationInfo. La propiedad InvocationInfo tiene varias propiedades útiles, incluida la propiedad Location. La propiedad Location indica la ruta de acceso del script que se está depurando.
$PSHOME
Contiene la ruta de acceso completa del directorio de instalación de Windows PowerShell, por lo general, %windir%\System32\WindowsPowerShell\v1.0. Puede usar esta variable en las rutas de acceso de los archivos de Windows PowerShell. Por ejemplo, el comando siguiente busca en los temas de ayuda conceptual la palabra "variable":
Select-String -Pattern Variable -Path $pshome\*.txt
$PSITEM
Igual que $_. Contiene el objeto actual en el objeto de canalización. Puede utilizar esta variable en los comandos que realizan una acción en todos los objetos o en los objetos seleccionados de una canalización.
$PSSCRIPTROOT
Contiene el directorio desde el que se ejecuta un script.
En Windows PowerShell 2.0, esta variable es válida únicamente en los módulos de script (.psm1). A partir de Windows PowerShell 3.0, es válida en todos los scripts.
$PSSENDERINFO
Contiene información sobre el usuario que inició el elemento PSSession, incluida la identidad del usuario y la zona horaria del equipo de origen. Esta variable solo está disponible en PSSessions.
La variable $PSSenderInfo incluye una propiedad configurable por el usuario, ApplicationArguments, que de forma predeterminada solo contiene el $PSVersionTable de la sesión de origen. Para agregar datos a la propiedad ApplicationArguments, utilice el parámetro ApplicationArguments del cmdlet New-PSSessionOption.
$PSUICULTURE
Contiene el nombre de la referencia cultural de la interfaz de usuario (IU) que está actualmente en uso en el sistema operativo. El idioma de interfaz de usuario determina qué cadenas de texto se usan con elementos de la interfaz de usuario como menús y mensajes. Este es el valor de la propiedad System.Globalization.CultureInfo.CurrentUICulture.Name del sistema. Para obtener el objeto System.Globalization.CultureInfo del sistema, use el cmdlet Get-UICulture.
$PSVERSIONTABLE
Contiene una tabla hash de solo lectura que muestra los detalles sobre la versión de Windows PowerShell que se ejecuta en la sesión actual. La tabla incluye los elementos siguientes:
CLRVersion: The version of the common language runtime (CLR)
BuildVersion: The build number of the current version
PSVersion: The Windows PowerShell version number
WSManStackVersion: The version number of the WS-Management stack
PSCompatibleVersions: Versions of Windows PowerShell that are
compatible with the current version
SerializationVersion The version of the serialization method
PSRemotingProtocolVersion
The version of the Windows PowerShell remote
management protocol
$PWD
Contiene un objeto path que representa la ruta de acceso completa del directorio actual.
$REPORTERRORSHOWEXCEPTIONCLASS
$REPORTERRORSHOWINNEREXCEPTION
$REPORTERRORSHOWSOURCE
$REPORTERRORSHOWSTACKTRACE
Las variables "ReportErrorShow" se definen en Windows PowerShell, pero no se implementan. Get-Variable las obtiene, pero no contienen datos válidos.
$SENDER
Contiene el objeto que generó este evento. Esta variable se rellena solo dentro del bloque Action de un comando de registro de eventos. El valor de esta variable también se puede encontrar en la propiedad Sender del objeto PSEventArgs (System.Management.Automation.PSEventArgs) que devuelve Get-Event.
$SHELLID
Contiene el identificador del shell actual.
$STACKTRACE
Contiene un seguimiento de pila del error más reciente.
$THIS
En un bloque de script que define una propiedad de script o un método de script, la variable $This hace referencia al objeto que se está extendiendo.
$TRUE
Contiene TRUE. Puede utilizar esta variable para representar TRUE en comandos y scripts.
VEA TAMBIÉN
about_Hash_Tables
about_Preference_Variables
about_Variables