Situatie
În Windows, sistemul de operare și diverse aplicații utilizează variabile de mediu(Environment Variables) pentru a stoca informații despre sistem, cum ar fi căile către folderele de sistem, setările de configurare și informații despre mediul de sistem.
Utilizatorii pot utiliza interfața grafică a Panoului de control (SystemPropertiesAdvanced.exe > Variabile de mediu) sau consola PowerShell pentru a adăuga, edita sau șterge variabile de mediu și valorile acestora.
Solutie
În PowerShell, variabilele de mediu ale sistemului pot fi accesate printr-o unitate virtuală numită „Env:”.
Get-PSDrive -PSProvider “Environment”
Pentru a afișa toate variabilele de mediu Windows, afișați pur și simplu conținutul acestei unități utilizând comanda dir:
dir Env:
Pentru a afișa toate variabilele de mediu Windows, afișați pur și simplu conținutul acestei unități utilizând comanda dir:
dir Env:
Sau:
Get-ChildItem ENV:
Variabilele de mediu(Environment Variables) sunt stocate într-un spațiu de nume plat, în care fiecare intrare este reprezentată ca o pereche [variabilă]:[valoare]. Pentru a obține valoarea unei variabile specifice, specificați numele acesteia după două puncte:
$Env:windir (De exemplu a returnat C:\WINDOWS)
Sau:
Get-ChildItem -Path Env:windir
Cele mai utilizate variabile de mediu(Environment Variables) în scripturile PowerShell sunt PATH, TEMP, USERPROFILE, COMPUTERNAME, OS și HOMEPATH. Unele variabile de mediu pot conține mai multe valori separate prin punct și virgulă. Comanda următoare afișează o listă de valori într-un format convenabil:
($Env:Path) -split ‘;’
Cu PowerShell, puteți modifica valorile variabilelor de mediu. De exemplu, pentru a adăuga o nouă valoare la variabila de mediu PATH, executați comanda(rol de exemplu):
$Env:Path += “;C:\Git\”
Cu toate acestea, noua valoare a variabilei de mediu va fi disponibilă numai în cadrul sesiunii PowerShell curente. Noua valoare va fi resetată odată ce închideți consola PowerShell sau reporniți computerul.
Ideea este că variabilele de mediu au trei domenii de aplicare:
Domeniul de aplicare al procesului(Process scope) – astfel de variabile de mediu sunt disponibile numai în cadrul procesului curent (sesiunea PowerShell). Le puteți lista folosind comanda:
Get-Variable
Domeniul de aplicare al mașinii(variabile de mediu la nivel de sistem – Machine scope) – variabile de mediu ale computerului (stocate în registru sub HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment)
Domeniul de aplicare al utilizatorului(User scope) – variabile de mediu ale utilizatorului curent (cheie de registru HKEY_CURRENT_USEREnvironment).
Numai variabilele de mediu setate la nivel de utilizator sau de mașină sunt persistente. Pentru a face valoarea unei variabile de mediu permanentă, trebuie să scrieți noua valoare direct în registru. De exemplu, pentru a adăuga o nouă valoare persistentă la variabila de mediu de sistem PATH, executați următoarele comenzi:
$envpath = ‘HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\’
$cur_value = Get-ItemPropertyValue -Path $envpath -Name ‘Path’
$new_value = $cur_value + ‘;C:\Git\’
Set-ItemProperty -Path $envpath -Name ‘Path’ -Value $new_value
Pentru a adăuga o variabilă de mediu la domeniul de aplicare al utilizatorului, puteți folosi următoarea:
[System.Environment]::SetEnvironmentVariable($var_name,$var_value,[System.EnvironmentVariableTarget]::User)
Utilizați metoda SetEnvironmentVariable() pentru a elimina o variabilă de mediu:
[Environment]::SetEnvironmentVariable(“SITE”, $null, “Machine”)
Leave A Comment?