about_Automatic_Variables

Se aplica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.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