Usare l'ambito delle variabili negli script di Windows PowerShell
A livello intuitivo, si potrebbe presupporre di poter accedere nello script alla variabile denominata $computer impostata in una funzione quando quest'ultima viene completata. Tuttavia, non è questo il caso. Le variabili hanno un ambito specifico e le interazioni tra ambiti sono limitate.
Nella tabella seguente vengono descritti i tre ambiti e il modo in cui influiscono sull'uso delle variabili.
Tabella 1: Ambiti
| Ambito | Descrizione |
|---|---|
| Peering di reti virtuali | L'ambito globale è destinato al prompt di Windows PowerShell. Le variabili impostate al prompt di Windows PowerShell possono essere esaminate in tutti gli script avviati da tale prompt. Le variabili create a un prompt di Windows PowerShell non esistono in altri prompt di Windows PowerShell o in istanze dell'ISE (Integrated Scripting Environment) di Windows PowerShell. |
| Script | L'ambito a livello di script è destinato a un singolo script. Le variabili impostate all'interno di uno script possono essere esaminate da tutte le funzioni di tale script. Se nell'ambito a livello di script si imposta il valore di una variabile che esiste già nell'ambito globale, nell'ambito a livello di script viene creata una nuova variabile. Esistono quindi due variabili con lo stesso nome in due ambiti distinti. A questo punto, quando si esamina il valore della variabile nello script, viene restituito quello nell'ambito a livello di script. |
| Funzione | L'ambito a livello di funzione è destinato a una singola funzione. Le variabili impostate all'interno di una funzione non vengono condivise con altre funzioni o con lo script. Se nell'ambito a livello di funzione si imposta il valore di una variabile che esiste già nell'ambito globale o nell'ambito dello script, nell'ambito della funzione viene creata una nuova variabile. Esistono quindi due variabili con lo stesso nome in due ambiti distinti. |
Nota
Per non creare confusione, è consigliabile evitare di usare gli stessi nomi di variabile in ambiti diversi.
Oltre a esaminare una variabile in un ambito di livello superiore, è anche possibile modificarla facendo riferimento specificamente al relativo ambito. Per modificare una variabile nell'ambito a livello di script, usare la sintassi seguente:
$script:var = "Modified from function"
Per non creare confusione, è consigliabile evitare di modificare le variabili tra ambiti. Impostare invece la variabile dell'ambito a livello di script in modo che sia uguale all'output della funzione. Se i dati nella funzione si trovano in una variabile, è possibile usare Return() per passarli di nuovo allo script.
Di seguito è riportato un esempio di utilizzo di Return() alla fine di una funzione per passare di nuovo un valore di variabile all'ambito dello script:
Return($users)
Nota
L'uso di Return() in una funzione aggiunge i dati specificati alla pipeline di dati restituiti, ma non sostituisce i dati esistenti nella pipeline. Come parte dello sviluppo di script, è necessario verificare esattamente quali dati vengono restituiti da una funzione.