Usare l'ambito delle variabili negli script di Windows PowerShell
È possibile che la $computer variabile impostata all'interno di una funzione sia accessibile nello script al termine della funzione. Non è questo il caso. Le variabili hanno un ambito specifico che limita la modalità di interazione con altri ambiti.
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 | Le variabili impostate al prompt di PowerShell sono disponibili per tutti gli script avviati da tale prompt, ma non per altre richieste o istanze ISE. |
| Script | Le variabili impostate all'interno di uno script sono disponibili per tutte le funzioni nello script. Se si crea una variabile di ambito script con lo stesso nome di una variabile globale, PowerShell crea una nuova variabile nell'ambito dello script e il valore dell'ambito dello script ha la precedenza. |
| Funzione | Le variabili impostate all'interno di una funzione non vengono condivise con altre funzioni o con lo script. Se si crea una variabile di ambito di funzione con lo stesso nome di una variabile globale o script, PowerShell crea una nuova variabile nell'ambito della funzione. |
Nota
Il Windows PowerShell ISE non è più in fase di sviluppo di funzionalità attive e supporta solo Windows PowerShell 5.1 e versioni precedenti. Per lo sviluppo di nuovi script, Visual Studio Code con l'estensione PowerShell è l'ambiente di scripting consigliato.
Nota
Evitare di usare lo stesso nome 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"
Evitare di modificare le variabili tra ambiti, perché può creare confusione. 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.