Molte persone preferiscono utilizzare PowerShell perché consente loro di eseguire operazioni che non possono essere eseguite con la GUI di Windows. Anche così, non si può negare che alcuni cmdlet di PowerShell possano essere un po' noiosi o complicati. Ma cosa accadrebbe se ci fosse un modo per poter modificare questi cmdlet e farli “comportare” nel modo desiderato? Che tu ci creda o no, c'è un modo semplice per farlo. È possibile modificare il comportamento del cmdlet modificando i valori dei parametri predefiniti di PowerShell. Questo articolo ti mostrerà come utilizzare i parametri predefiniti di PowerShell per modificare il comportamento dei comandi cmdlet.
Avvertimento
Prima di iniziare, ci sono alcune cose che devi tenere a mente. Sebbene la modifica dei parametri predefiniti di PowerShell e del comportamento cmdelt sia conveniente, può causare problemi. Se esegui uno script e lo script presuppone che il cmdlet modificato si comporterà in un determinato modo, potresti ottenere risultati imprevedibili. Pertanto, dovresti assicurarti di modificare attentamente i parametri predefiniti di PowerShell.
Recensione veloce
Esistono due concetti di PowerShell con cui è necessario avere familiarità per poter lavorare con i parametri predefiniti. Il primo concetto è variabile. In PowerShell i nomi delle variabili iniziano sempre con il simbolo del dollaro ed è possibile scrivere il contenuto di una variabile digitandone il nome.
Il secondo concetto con cui potresti avere familiarità è la tabella hash. Una tabella hash è essenzialmente un elenco composto da coppie chiave/valore. Ad esempio, supponiamo di voler creare una tabella hash contenente i nomi degli stati degli Stati Uniti e le relative abbreviazioni. Di seguito è riportato il codice:
$StateList = @{}
$StateList.add('Florida','FL')
$StateList.add('South Carolina','SC')
$StateList.add('Georgia','GA')
$StateList
La prima riga di codice crea una tabella hash vuota denominata $StateList . Le tre righe successive aggiungono voci alla tabella. Ogni voce è composta da una chiave (nome dello stato) e da un valore (abbreviazione dello stato). L'ultima riga elenca il contenuto della tabella. Puoi vedere il codice in azione nell'immagine qui sotto.
Questo è solo un esempio molto semplice ed esistono molti altri modi per utilizzare le tabelle hash.
Utilizza i parametri predefiniti di PowerShell
PowerShell dispone di una variabile incorporata utilizzata per archiviare i parametri predefiniti utilizzati con i relativi cmdlet. Questa variabile si chiama $PSDefaultParameterValues . Come avrai notato dall'introduzione iniziale e dal nome della variabile, questa non è una variabile ordinaria ma una tabella hash. Tuttavia, se inserisci il nome della variabile in PowerShell, vedrai rapidamente che la tabella è vuota, come mostrato di seguito.
Allora cosa possiamo fare con questa variabile $PSDefaultParameterValues . Come accennato in precedenza, puoi controllare il comportamento dei cmdlet di PowerShell. L'unico punto è che non è possibile superare le capacità intrinseche del comando cmdlet. Quindi diamo un'occhiata a un esempio.
Questo esempio potrebbe non essere qualcosa che desideri utilizzare nella vita reale, ma ti mostrerà quanto sia facile modificare radicalmente il comportamento del cmdlet. Se inserisci il cmdlet Get-TimeZone in PowerShell, vedrai il nome del fuso orario per cui il tuo PC è attualmente configurato. Puoi vedere questo esempio nell'immagine qui sotto.
Ora modifichiamo questo cmdlet in modo che non visualizzi il fuso orario che il sistema è configurato per utilizzare, ma invece i fusi orari disponibili. A tale scopo, è necessaria la sintassi del cmdlet utilizzando il cmdlet Get-Help seguito dal cmdlet Get-TimeZone . Di seguito è possibile visualizzare la sintassi del cmdlet.
Questa sintassi include un parametro chiamato ListAvailable . Inserisci il comando seguente:
$PSDefaultParameterValues.Add("Get-TimeZone:ListAvailable",$True)
La prima parte di questo comando indica semplicemente a PowerShell che desideri aggiungere un valore alla tabella hash, proprio come abbiamo fatto con l'esempio dell'abbreviazione dello stato americano nella sezione precedente. Questa tabella hash contiene una coppia chiave/valore. In questo caso la chiave è il nome del cmdlet (Get-TimeZone) seguito da una virgola e dal nome del parametro che si desidera impostare. In questo caso, il nome del parametro è ListAvailable. La seconda parte di questo cmdlet è il valore che vuoi assegnare al parametro. Eccolo $True . Il parametro ListAvailable in genere non necessita di un valore, quindi specificando $True si indica a PowerShell di utilizzare questo parametro senza assegnargli un valore.
Se guardi l'immagine qui sotto, vedrai cosa succede quando esegui il cmdlet Get-TimeZone.
Cose da tenere a mente
La cosa più importante da capire è che l'aggiunta di un nuovo valore per un parametro predefinito di PowerShell significa modificare il comportamento predefinito del cmdlet, non rimuovere le funzionalità del cmdlet. Anche quando si modifica il cmdlet Get-TimeZone per mostrare i fusi orari disponibili invece di mostrare il fuso orario corrente. Puoi comunque visualizzare le informazioni sul fuso orario corrente se ne visualizzi di più.
Un'altra cosa che devi sapere è che i parametri predefiniti personalizzati possono essere rimossi. Per rimuovere un singolo elemento, utilizza il comando $PSDefaultParameterValues.Remove , seguito dal nome dell'elemento che desideri rimuovere. Per esempio:
$PSDefaultParameterValues.Remove("Get-TimeZone:ListAvailable")
Invece, puoi eliminare l'intero contenuto della tabella hash utilizzando questo comando:
$PSDefaultParameterValues.Clear();
Di seguito puoi vedere esempi di entrambe le tecniche:
È possibile eliminare l'intera tabella hash o eliminare una singola voce.
La modifica del comportamento predefinito di un comando cmdlet è qualcosa che non fai spesso, ma quando ne hai bisogno sai già come modificarlo.
Ti auguro successo!
Vedi altro: