di PowerShell ' Variabili automatiche ” sono essenziali per la gestione del sistema, l'automazione e le attività di scripting. Queste variabili sono integrate dal runtime di PowerShell e fungono da segnaposto per archiviare e fare riferimento a informazioni specifiche durante l'esecuzione di uno script o di un comando. Comprendere e utilizzare queste variabili automatiche in modo efficace può migliorare notevolmente l'efficienza e la funzionalità degli script di PowerShell.
Questo articolo mira a esplorare il concetto di 'variabili automatiche' in PowerShell, il loro significato e il modo in cui possono essere sfruttate in vari scenari.
Cosa sono le variabili automatiche in PowerShell?
Per iniziare, approfondiamo la definizione di ' Variabili automatiche ”. Queste variabili sono predefinite e vengono create automaticamente da PowerShell durante l'esecuzione dello script. Questi hanno scopi diversi, inclusa la fornitura di informazioni sul sistema, argomenti della riga di comando, dettagli relativi allo script e molto altro.
PowerShell offre diverse 'variabili automatiche' e ognuna di esse ha uno scopo distinto nell'esecuzione dello script. Queste variabili sono, come segue:
1. $PSVersionTable
Una delle variabili automatiche fondamentali in PowerShell è ' $PSVersionTable ”. Questa variabile consente agli sviluppatori di script di accertare la versione di PowerShell utilizzata, che può essere cruciale quando si considera la compatibilità e la disponibilità di determinate caratteristiche e funzionalità.
Le seguenti proprietà sono associate a questa variabile:
Versione PS: Restituisce il numero di versione di PowerShell.
Edizione PS: Per PowerShell 4 e versioni precedenti, nonché per PowerShell 5.1 nelle versioni Windows con funzionalità complete, questa proprietà ha il valore 'Desktop'. Questa caratteristica ha il valore di Core per PowerShell 6 e versioni successive, nonché di Windows PowerShell 5.1 per le edizioni a basso footprint come Windows Nano Server o Windows IoT.
GitCommitId: Recupera l'ID commit GitHub dei file di origine.
VOI: Registra le informazioni sul sistema informatico utilizzato da PowerShell.
Piattaforma: Restituisce la piattaforma di supporto del sistema operativo. Unix ha valore su Linux e macOS. Dai un'occhiata a $IsMacOs e $IsLinux.
Versioni compatibili con PS: Vengono restituite le versioni di PowerShell compatibili con la versione corrente.
PSRemotingProtocolVersion: Restituisce il numero di versione per il protocollo di gestione remota di PowerShell.
Versione di serializzazione: Restituisce la versione del metodo di serializzazione.
Versione WSManStack: Restituisce il numero di versione dello stack WS-Management.
$ PSVersionTable
2. $Arg
Un'altra variabile automatica essenziale in PowerShell è ' $Arg ”, che contiene un array di argomenti della riga di comando passati a uno script o a una funzione. Questa variabile consente agli sviluppatori di elaborare e manipolare dinamicamente gli argomenti forniti all'interno dei loro script.
Quando si definisce una funzione, è possibile utilizzare la parola chiave 'param' per dichiarare i parametri oppure è possibile aggiungere un elenco di parametri separati da virgole tra parentesi dopo il nome della funzione. La variabile '$Args' di un'azione evento memorizza gli oggetti che fungono da segnaposto per i parametri evento dell'evento gestito:
per ciascuno ( $arg In $Arg ) {Write-Host $arg
}
3. $MiaInvocazione
IL ' $MyInvocazione La variabile ” fornisce dati di background cruciali sullo script o sulla procedura attualmente in esecuzione. Offre proprietà come il nome dello script, il numero di riga dello script e se lo script viene eseguito in modo interattivo o non interattivo. Queste proprietà aiutano gli sviluppatori di script a implementare la logica di ramificazione, definire meccanismi di gestione degli errori o generare registrazioni e rapporti significativi:
$ MyInvocazione
4. $Errore
Una variabile automatica meno conosciuta “ $Errore ”, cattura in modo efficace eventuali messaggi di errore o eccezioni che si verificano durante l'esecuzione dello script. È possibile accedere a '$Error' per recuperare dettagli di errore specifici come messaggi di eccezione, tracce dello stack o codici di errore, consentendo analisi e debug dettagliati.
L'errore più recente è rappresentato dal primo oggetto errore nell'array ' $Errore[0] “. È possibile utilizzare l'opzione comune ErrorAction con il valore 'Ignore' per impedire che gli errori vengano aggiunti all'array '$Error'.
Supponiamo di aver digitato un comando accurato:
ip [ onfig
Ora, se inseriamo il cmdlet '$Error':
$ Errore
5. $PSCmdlet
Quando si lavora con i moduli PowerShell, la variabile automatica ' $PSCmdlet ” entra in vigore. Questa variabile fornisce l'accesso all'istanza corrente del cmdlet o della funzione richiamata, facilitando l'interazione diretta con le relative proprietà e metodi.
Utilizzando '$PSCmdlet', gli sviluppatori di script avanzati possono mettere a punto e migliorare il comportamento dei moduli estendendo o modificando le funzionalità integrate. È possibile utilizzare gli attributi e i metodi dell'oggetto nel cmdlet o nel codice della funzione in risposta ai criteri di utilizzo:
funzione typeof-psCmdlet {[ cmdletBinding ( ) ] parametro ( )
eco 'tipo di ` $psCmdlet È $($psCmdlet.GetType() .Nome e cognome)'
}
typeof-psCmdlet
Oltre alle suddette variabili, PowerShell comprende variabili automatiche come $HOME, $PROFILE, $PWD e molte altre, che servono a scopi diversi, come l'accesso all'input, il rilevamento degli errori, il recupero di informazioni sull'ambiente, la gestione dei parametri e molto altro. Queste variabili sono elencate di seguito:
Variabili automatiche | Descrizione |
$$ | Contiene l'ultimo token nella riga precedente ricevuto dalla sessione di PowerShell. |
$? | Memorizza lo stato di esecuzione dell'ultimo comando. |
$^ | Contiene il primo token dell'ultima riga ricevuta dalla sessione. |
$_ | Rappresenta l'oggetto corrente nella pipeline. |
$ConsoleFileName | Contiene il percorso del file della console (.psc1) utilizzato più di recente nella sessione. |
$EnabledExperimentalFeatures | Contiene un elenco delle funzioni sperimentali abilitate. |
$Evento | Contiene un oggetto 'PSEventArgs' che rappresenta l'evento in fase di elaborazione. |
$EventArgs | Contiene il primo argomento dell'evento in fase di elaborazione. |
$ EventSubscriber | Rappresenta il sottoscrittore dell'evento in fase di elaborazione. |
$ExecutionContext | Rappresenta il contesto di esecuzione dell'host di PowerShell. |
$falso | Rappresenta il valore booleano 'False'. |
$forogni | Contiene l'enumeratore di un ciclo 'for-Each'. |
$CASA | Contiene il percorso completo della home directory dell'utente. |
$Host | Rappresenta l'applicazione host corrente per PowerShell. |
$input | Funge da enumeratore per tutti gli input passati a una funzione o uno script. |
$IsCoreCLR | Indica se la sessione è in esecuzione in .NET Core Runtime (CoreCLR). |
$èLinux | Indica se la sessione è in esecuzione su un sistema operativo Linux. |
$IsMacOS | Indica se la sessione è in esecuzione su un sistema operativo MacOS. |
$IsWindows | Identifica se la sessione è in esecuzione su un sistema operativo Windows. |
$LASTEXITCODE | Memorizza il codice di uscita dell'ultimo programma nativo o script di PowerShell. |
$ Partite | Contiene stringhe corrispondenti dagli operatori '-match' e '-notmatch'. |
$NestedPromptLevel | Tiene traccia del livello di prompt corrente nei comandi nidificati o negli scenari di debug. |
$null | Rappresenta un valore nullo o vuoto. |
$ PID | Contiene l'identificatore di processo (PID) della sessione di PowerShell. |
$PROFILO | Contiene il percorso completo del profilo di PowerShell per l'utente corrente e l'applicazione host. |
$PSBoundParameters | Contiene un dizionario di parametri passati a uno script o una funzione e i relativi valori. |
$PSCommandPath | Contiene il percorso completo e il nome file dello script in esecuzione. |
$PSCultura | Riflette le impostazioni cultura dell'attuale spazio di esecuzione di PowerShell. |
$PSEdition | Contiene le informazioni sull'edizione di PowerShell. |
$PSHOME | Contiene il percorso completo della directory di installazione di PowerShell. |
$PSItem | Uguale a $_, rappresenta l'oggetto corrente nella pipeline. |
$PSScriptRoot | Contiene il percorso completo della directory padre dello script in esecuzione. |
$PSSenderInfo | Contiene informazioni sull'utente che ha avviato la sessione PSSession. |
$PSUICultura | Riflette le impostazioni cultura dell'interfaccia utente (UI) configurate nel sistema operativo. |
$PWD | Rappresenta la directory di lavoro corrente della sessione di PowerShell. |
$Mittente | Contiene l'oggetto che ha generato un evento. |
$ShellId | Contiene l'identificatore della shell corrente. |
$StackTrace | Memorizza l'analisi dello stack per l'errore più recente. |
$switch | Contiene l'enumeratore dell'istruzione 'Switch'. |
$questo | Si riferisce all'istanza di una classe nei blocchi di script che estendono le classi. |
$vero | Rappresenta il valore booleano 'True'. |
Tutte le 'variabili automatiche' in PowerShell possono essere trovate eseguendo il comando seguente:
Get-Variabile
Conclusione
“ Variabili automatiche ” costituiscono la spina dorsale dello scripting di PowerShell, consentendo agli sviluppatori di ottenere informazioni sul sistema, argomenti della riga di comando, contesto di esecuzione dello script e altro ancora. Sfruttando variabili automatiche come '$PSVersionTable', '$Args', '$MyInvocation', '$Error' e altre, gli sviluppatori di script PowerShell possono creare pratiche di amministrazione del sistema semplificate.