Discussione
Nei file batch, le variabili d’ambiente sono il modo principale per memorizzare informazioni temporanee o per trasferire informazioni tra i file batch. Le variabili di PowerShell e i parametri degli script sono modi più efficaci per risolvere questi problemi, ma le variabili d’ambiente continuano a fornire un modo utile per accedere alle impostazioni di sistema comuni, come il percorso del sistema, la directory temporanea, il nome di dominio, il nome utente e altro ancora.
PowerShell rende visibili le variabili d’ambiente attraverso il suo provider d’ambiente: un contenitore che ti permette di lavorare con le variabili d’ambiente proprio come faresti con gli elementi del filesystem o i provider del registro. Per impostazione predefinita, PowerShell definisce un’unità env: (molto simile a c: o d:) che fornisce l’accesso a queste informazioni:
PS > dir env:Name Value---- -----Path c:\progra~1\ruby\bin;C:\WINDOWS\system32;C:\TEMP C:\DOCUME~1\Lee\LOCALS~1\TempSESSIONNAME ConsolePATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;(...)
Siccome si tratta di una normale unità PowerShell, il modo completo per ottenere il valore di una variabile d’ambiente appare così:
PS > Get-Content Env:\UsernameLee
Quando si tratta di variabili d’ambiente, però, questa è una sintassi che non avrete quasi mai bisogno di usare, a causa del supporto di PowerShell per il Get-Content
e Set-Content
sintassi delle variabili, che si abbrevia in:
PS > $env:UsernameLee
Questa sintassi funziona per tutte le unità ma è usata più comunemente per accedere alle variabili di ambiente. Per maggiori informazioni su questa sintassi, consultate Accesso alle informazioni sull’invocazione del vostro comando.
Alcune variabili d’ambiente in realtà ottengono i loro valori da una combinazione di due posti: le impostazioni dell’intera macchina e le impostazioni dell’utente corrente. Se vuoi accedere ai valori delle variabili d’ambiente configurate specificamente a livello di macchina o di utente, usa il metodo ::GetEnvironmentVariable()
. Per esempio, se avete definito una directory tools nel vostro percorso, potreste vedere:
PS > ::GetEnvironmentVariable("Path", "User")d:\lee\tools
Per impostare queste variabili d’ambiente specifiche della macchina o dell’utente in modo permanente, usate il metodo ::SetEnvironmentVariable()
:
::SetEnvironmentVariable(<name>, <value>, <target>
)
Il parametro target
definisce dove questa variabile deve essere memorizzata: User
per l’utente corrente e Machine
per tutti gli utenti della macchina. Per esempio, per aggiungere permanentemente la directory degli strumenti al tuo percorso:
$pathElements = @(::GetEnvironmentVariable("Path", "User") -split ";")$pathElements += "d:\tools"$newPath = $pathElements -join ";"::SetEnvironmentVariable("Path", $newPath, "User")
Per maggiori informazioni sulla modifica del percorso di sistema, vedi Modificare il percorso utente o di sistema.
Per maggiori informazioni sulla sintassi delle variabili Get-Content
e Set-Content
, vedi Variabili. Per maggiori informazioni sul fornitore di ambiente, digitare Get-Help About_Environment
.