Cosa sono le variabili automatiche in PowerShell

Cosa Sono Le Variabili Automatiche In Powershell



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.