about_Automatic_Variables

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

Inserire l'introduzione qui.

ARGOMENTO

about_Automatic_Variables

DESCRIZIONE BREVE

Descrive le variabili che archiviano informazioni sullo stato per Windows PowerShell. Queste variabili vengono create e gestite da Windows PowerShell.

DESCRIZIONE LUNGA

L'elenco seguente include le variabili automatiche in Windows PowerShell:

$$

Contiene l'ultimo token nell'ultima riga ricevuto dalla sessione.

$?

Contiene lo stato di esecuzione dell'ultima operazione. Contiene TRUE se l'ultima operazione è riuscita e FALSE se non è riuscita.

$^

Contiene il primo token nell'ultima riga ricevuto dalla sessione.

$_

Uguale a $PSItem. Contiene l'oggetto corrente nell'oggetto pipeline. Questa variabile può essere usata nei comandi che eseguono un'azione su ciascun oggetto o sugli oggetti selezionati in una pipeline.

$ARGS

Contiene una matrice dei parametri non dichiarati e/o dei valori dei parametri passati a una funzione, a uno script o a un blocco di script. Quando si crea una funzione, è possibile dichiarare i parametri usando la parola chiave param o aggiungendo tra parentesi un elenco delimitato da virgole di parametri dopo il nome della funzione.

In un'azione dell'evento, la variabile $Args contiene gli oggetti che rappresentano gli argomenti dell'evento in fase di elaborazione. Questa variabile viene popolata solo all'interno del blocco Action di un comando di registrazione eventi. Il valore di questa variabile è disponibile anche nella proprietà SourceArgs dell'oggetto PSEventArgs (System.Management.Automation.PSEventArgs) restituito da Get-Event.

$CONSOLEFILENAME

Contiene il percorso del file della console (.psc1) usato più di recente nella sessione. Questa variabile viene popolata quando si avvia Windows PowerShell con il parametro PSConsoleFile oppure quando si usa il cmdlet Export-Console per esportare i nomi degli snap-in in un file della console.

Quando si usa il cmdlet Export-Console senza parametri, viene aggiornato automaticamente il file della console usato più di recente nella sessione. È possibile usare questa variabile automatica per determinare quale file aggiornare.

$ERROR

Contiene una matrice di oggetti errore che rappresentano gli errori più recenti. L'errore più recente è il primo oggetto errore nella matrice ($Error[0]).

Per impedire che un errore venga aggiunto alla matrice $Error, usare il parametro comune ErrorAction con un valore Ignore. Per altre informazioni, vedere about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216).

$EVENT

Contiene un oggetto PSEventArgs che rappresenta l'evento in fase di elaborazione. Questa variabile viene popolata solo all'interno del blocco Action di un comando di registrazione eventi, ad esempio Register-ObjectEvent. Il valore di questa variabile è lo stesso oggetto restituito dal cmdlet Get-Event. Di conseguenza, in un blocco di script Action è possibile usare le proprietà della variabile $Event, ad esempio $Event.TimeGenerated.

$EVENTARGS

Contiene un oggetto che rappresenta il primo argomento dell'evento che deriva da EventArgs dell'evento in fase di elaborazione. Questa variabile viene popolata solo all'interno del blocco Action di un comando di registrazione eventi. Il valore di questa variabile è disponibile anche nella proprietà SourceEventArgs dell'oggetto PSEventArgs (System.Management.Automation.PSEventArgs) restituito da Get-Event.

$EVENTSUBSCRIBER

Contiene un oggetto PSEventSubscriber che rappresenta il sottoscrittore di eventi dell'evento in fase di elaborazione. Questa variabile viene popolata solo all'interno del blocco Action di un comando di registrazione eventi. Il valore di questa variabile è lo stesso oggetto restituito dal cmdlet Get-EventSubscriber.

$EXECUTIONCONTEXT

Contiene un oggetto EngineIntrinsics che rappresenta il contesto di esecuzione dell'host di Windows PowerShell. Questa variabile può essere usata per trovare gli oggetti di esecuzione disponibili per i cmdlet.

$FALSE

Contiene FALSE. Questa variabile può essere usata per rappresentare FALSE nei comandi e negli script al posto della stringa "false". La stringa può essere interpretata come TRUE se viene convertita in una stringa non vuota o in un numero intero diverso da zero.

$FOREACH

Contiene l'enumeratore (non i valori risultanti) di un ciclo ForEach. È possibile usare le proprietà e i metodi degli enumeratori per il valore della variabile $ForEach. Questa variabile esiste solo quando è in esecuzione il ciclo ForEach e viene eliminata al termine del ciclo. Per informazioni dettagliate, vedere about_ForEach.

$HOME

Contiene il percorso completo della home directory dell'utente. Questa variabile è equivalente alle variabili di ambiente %homedrive%%homepath%, in genere C:\Users\<UserName>.

$HOST

Contiene un oggetto che rappresenta l'applicazione host corrente per Windows PowerShell. Questa variabile può essere usata per rappresentare l'host corrente nei comandi oppure per visualizzare o modificare le proprietà dell'host, ad esempio $Host.version, $Host.CurrentCulture o $host.ui.rawui.setbackgroundcolor("Red").

$INPUT

Contiene un enumeratore che enumera tutti gli input passati a una funzione. La variabile $input è disponibile solo per le funzioni e i blocchi di script (funzioni senza nome). Nel blocco Process di una funzione la variabile $input enumera l'oggetto che si trova attualmente nella pipeline. Quando il blocco Process viene completato, la pipeline non contiene più oggetti, quindi la variabile $input enumera una raccolta vuota. Se la funzione non contiene un blocco Process, la variabile $input enumera la raccolta di tutti i gli input per la funzione nel blocco End.

$LASTEXITCODE

Contiene il codice di uscita dell'ultimo programma basato su Windows che è stato eseguito.

$MATCHES

La variabile $Matches funziona con gli operatori -match e -notmatch. Quando si invia un input scalare all'operatore –match o -notmatch e questo rileva una corrispondenza viene restituito un valore booleano e la variabile automatica $Matches viene popolata con una tabella hash di tutti i valori stringa per i quali è stata trovata una corrispondenza. Per altre informazioni sull'operatore -match, vedere about_comparison_operators.

$MYINVOCATION

Contiene informazioni sul comando corrente, ad esempio nome, parametri, valori dei parametri e informazioni su come è stato avviato, chiamato o richiamato il comando, ad esempio il nome dello script che ha chiamato il comando corrente.

$MyInvocation viene popolato solo per gli script le funzioni e i blocchi di script. Per identificare il comando corrente è possibile usare le informazioni nell'oggetto System.Management.Automation.InvocationInfo, restituite da $MyInvocation nello script corrente, ad esempio il percorso e il nome file dello script ($MyInvocation.MyCommand.Path) oppure il nome di una funzione ($MyInvocation.MyCommand.Name). Ciò è particolarmente utile per trovare il nome dello script corrente.

A partire da Windows PowerShell 3.0, $MyInvocation include queste nuove proprietà.

       -- 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 differenza delle variabili automatiche $PSScriptRoot e $PSCommandPath, le proprietà PSScriptRoot e PSCommandPath della variabile automatica $MyInvocation contengono informazioni relative all'invoker o allo script di chiamata, non allo script corrente.

$NESTEDPROMPTLEVEL

Contiene il livello di prompt corrente. Il valore 0 indica il livello di prompt originale. Il valore viene incrementato quando si entra in un livello annidato e ridotto quando si esce.

Ad esempio, Windows PowerShell presenta un prompt dei comandi annidato quando si usa il metodo $Host.EnterNestedPrompt. Windows PowerShell presenta un prompt dei comandi annidato anche quando si raggiunge un punto di interruzione nel debugger di Windows PowerShell.

Quando si immette un prompt annidato, Windows PowerShell sospende il comando corrente, salva il contesto di esecuzione e incrementa il valore della variabile $NestedPromptLevel. Per creare altri prompt dei comandi annidati (fino a 128 livelli) o per tornare al prompt dei comandi originale, completare il comando o digitare "exit".

La variabile $NestedPromptLevel consente di tenere traccia del livello di prompt. È possibile creare un prompt dei comandi alternativo di Windows PowerShell che include questo valore ed è quindi sempre visibile.

$NULL

$null è una variabile automatica che contiene un valore NULL o vuoto. Questa variabile può essere usata per rappresentare un valore assente o non definito nei comandi e negli script.

Windows PowerShell gestisce $null come oggetto con un valore, ossia come un segnaposto esplicito, quindi $null può essere usato per rappresentare un valore vuoto in una serie di valori.

Ad esempio, se $null è incluso in una raccolta viene contato come uno degli oggetti.

           C:\PS> $a = ".dir", $null, ".pdf"
           C:\PS> $a.count
           3

Se si invia tramite pipe la variabile $null al cmdlet ForEach-Object, viene generato un valore per $null, come accade per gli altri oggetti.

           PS C:\ps-test> ".dir", "$null, ".pdf" | Foreach {"Hello"}
           Hello
           Hello
           Hello

Di conseguenza, non è possibile usare $null per indicare che non sono presenti valori del parametro. Un valore del parametro $null esegue l'override del valore del parametro predefinito.

Tuttavia, poiché Windows PowerShell gestisce la variabile $null come segnaposto, è possibile usarla in script come quello riportato di seguito, che non funzionerebbe se $null venisse ignorato.

           $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 è una variabile speciale che archivia una stringa che si intende usare come separatore di campo di output. Usare questa variabile quando si converte una matrice in una stringa. Per impostazione predefinita, il valore di $OFS è " ", ma è possibile cambiarlo nella sessione digitando $OFS="<valore>". Se ci si aspetta il valore predefinito " " nello script, nel modulo o nell'output di configurazione, verificare che il valore predefinito $OFS non venga modificato in altre sezioni del codice.

Esempi:

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 l'identificatore di processo (PID) del processo che ospita la sessione di Windows PowerShell corrente.

$PROFILE

Contiene il percorso completo del profilo di Windows PowerShell per l'utente corrente e l'applicazione host corrente. Questa variabile può essere usata per rappresentare il profilo nei comandi. Ad esempio, è possibile usarla in un comando per determinare se è stato creato un profilo:

           test-path $profile

Oppure, può essere usata in un comando per creare un profilo:

           new-item -type file -path $pshome -force

Può essere usata in un comando anche per aprire il profilo in Blocco note:

           notepad $profile

$PSBOUNDPARAMETERS

Contiene un dizionario dei parametri passati a uno script o a una funzione insieme ai relativi valori correnti. Questa variabile contiene un valore solo in un ambito in cui i parametri sono dichiarati, ad esempio in uno script o in una funzione. Può essere usata per visualizzare o modificare i valori correnti dei parametri o per passare i valori dei parametri a un altro script o funzione.

Ad esempio:

         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 oggetto che rappresenta il cmdlet o la funzione avanzata in esecuzione.

Le proprietà e i metodi dell'oggetto possono essere usati nel cmdlet o nel codice della funzione per soddisfare le condizioni di utilizzo. Ad esempio, la proprietà ParameterSetName contiene il nome del set di parametri usato e il metodo ShouldProcess aggiunge dinamicamente i parametri WhatIf e Confirm al cmdlet.

Per altre informazioni sulla variabile automatica $PSCmdlet, vedere about_Functions_Advanced.

$PSCOMMANDPATH

Contiene il percorso completo e il nome file dello script in esecuzione. Questa variabile è valida in tutti gli script.

$PSCULTURE

Contiene il nome delle impostazioni cultura attualmente in uso nel sistema operativo. Le impostazioni cultura determinano il formato di visualizzazione degli elementi, ad esempio numeri, valuta e date. Corrisponde al valore della proprietà System.Globalization.CultureInfo.CurrentCulture.Name del sistema. Per ottenere l'oggetto System.Globalization.CultureInfo per il sistema, usare il cmdlet Get-Culture.

$PSDEBUGCONTEXT

Durante il debug questa variabile contiene informazioni sull'ambiente di debug. Negli altri casi contiene un valore NULL. Di conseguenza, può essere usata per indicare se il debugger ha il controllo. Quando è popolata, contiene un oggetto PsDebugContext con le proprietà Breakpoints e InvocationInfo. La proprietà InvocationInfo ha diverse proprietà utili, tra cui la proprietà Location. La proprietà Location indica il percorso dello script di cui viene eseguito il debug.

$PSHOME

Contiene il percorso completo della directory di installazione per Windows PowerShell, in genere %windir%\System32\WindowsPowerShell\v1.0. Questa variabile può essere usata nei percorsi dei file Windows PowerShell. Ad esempio, il comando seguente cerca gli argomenti della Guida concettuale relativi alla parola "variable":

            Select-String -Pattern Variable -Path $pshome\*.txt

$PSITEM

Uguale a $_. Contiene l'oggetto corrente nell'oggetto pipeline. Questa variabile può essere usata nei comandi che eseguono un'azione su ciascun oggetto o sugli oggetti selezionati in una pipeline.

$PSSCRIPTROOT

Contiene la directory dalla quale viene eseguito uno script.

In Windows PowerShell 2.0 questa variabile è valida solo nei moduli di script (.psm1). A partire da Windows PowerShell 3.0, è valida in tutti gli script.

$PSSENDERINFO

Contiene le informazioni sull'utente che ha avviato la sessione PSSession, inclusa l'identità dell'utente e il fuso orario del computer di origine. Questa variabile è disponibile solo in PSSession.

La variabile $PSSenderInfo include una proprietà configurabile dall'utente, ApplicationArguments, che, per impostazione predefinita, contiene solo la variabile $PSVersionTable della sessione di origine. Per aggiungere dati alla proprietà ApplicationArguments, usare il parametro ApplicationArguments del cmdlet New-PSSessionOption.

$PSUICULTURE

Contiene il nome delle impostazioni cultura dell'interfaccia utente attualmente in uso nel sistema operativo. Le impostazioni cultura dell'interfaccia utente determinano quali stringhe di testo vengono usate per gli elementi dell'interfaccia utente, ad esempio menu e messaggi. Corrisponde al valore della proprietà System.Globalization.CultureInfo.CurrentUICulture.Name del sistema. Per ottenere l'oggetto System.Globalization.CultureInfo per il sistema, usare il cmdlet Get-UICulture.

$PSVERSIONTABLE

Contiene una tabella hash di sola lettura che visualizza i dettagli sulla versione di Windows PowerShell in esecuzione nella sessione corrente. La tabella include gli elementi seguenti:

    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 oggetto percorso che rappresenta il percorso completo della directory corrente.

$REPORTERRORSHOWEXCEPTIONCLASS

$REPORTERRORSHOWINNEREXCEPTION
$REPORTERRORSHOWSOURCE
$REPORTERRORSHOWSTACKTRACE

Le variabili "ReportErrorShow" sono definite in Windows PowerShell, ma non sono implementate. Get-Variable le recupera, ma non contengono dati validi.

$SENDER

Contiene l'oggetto che ha generato questo evento. Questa variabile viene popolata solo all'interno del blocco Action di un comando di registrazione eventi. Il valore di questa variabile è disponibile anche nella proprietà Sender dell'oggetto PSEventArgs (System.Management.Automation.PSEventArgs) restituito da Get-Event.

$SHELLID

Contiene l'identificatore della shell corrente.

$STACKTRACE

Contiene un'analisi dello stack per l'errore più recente.

$THIS

In un blocco di script che definisce una proprietà di script o un metodo di script, la variabile $This fa riferimento all'oggetto che viene esteso.

$TRUE

Contiene TRUE. Questa variabile può essere usata per rappresentare TRUE nei comandi e negli script.

VEDERE ANCHE

about_Hash_Tables

about_Preference_Variables

about_Variables