Sdílet prostřednictvím


O proměnných prostředí

KRÁTKÝ POPIS

Popisuje, jak získat přístup k proměnným prostředí Windows v Windows PowerShell.

DLOUHÝ POPIS

Proměnné prostředí ukládají informace o prostředí operačního systému. Tyto informace zahrnují podrobnosti, jako je cesta k operačnímu systému, počet procesorů používaných operačním systémem a umístění dočasných složek.

Proměnné prostředí ukládají data používaná operačním systémem a dalšími programy. Například proměnná prostředí WINDIR obsahuje umístění instalačního adresáře Systému Windows. Programy se můžou dotazovat na hodnotu této proměnné a určit, kde se nacházejí soubory operačního systému Windows.

PowerShell umožňuje zobrazit a změnit proměnné prostředí Windows, včetně proměnných nastavených v registru a proměnných nastavených pro konkrétní relaci. Zprostředkovatel prostředí PowerShell tento proces zjednodušuje tím, že usnadňuje zobrazení a změnu proměnných prostředí.

Na rozdíl od jiných typů proměnných v PowerShellu jsou proměnné prostředí a jejich hodnoty zděděny podřízenými relacemi, jako jsou místní úlohy na pozadí a relace, ve kterých členové modulu běží. Díky tomu jsou proměnné prostředí vhodné pro ukládání hodnot, které jsou potřeba v nadřazených i podřízených relacích.

Zprostředkovatel prostředí PowerShellu

Zprostředkovatel prostředí PowerShellu umožňuje přístup k proměnným prostředí Windows v PowerShellu na jednotce PowerShellu (jednotka Env: ). Tato jednotka vypadá podobně jako jednotka systému souborů. Pokud chcete přejít na jednotku Env:, zadejte:

Set-Location Env:

Pokud chcete zobrazit obsah jednotky Env: , zadejte:

Get-ChildItem

Proměnné prostředí v jednotce Env: můžete zobrazit z libovolné jiné jednotky PowerShellu a můžete přejít do jednotky Env: a zobrazit a změnit proměnné prostředí.

Objekty proměnných prostředí

V PowerShellu je každá proměnná prostředí reprezentována objektem, který je instancí třídy System.Collections.DictionaryEntry.

V každém objektu DictionaryEntry je název proměnné prostředí klíč slovníku. Hodnota proměnné je hodnota slovníku.

Pokud chcete zobrazit proměnnou prostředí v PowerShellu, získejte objekt, který představuje proměnnou, a pak zobrazte hodnoty vlastností objektu. Při změně proměnné prostředí v PowerShellu použijte metody, které jsou přidruženy k objektu DictionaryEntry.

K zobrazení vlastností a metod objektu, který představuje proměnnou prostředí v PowerShellu, použijte rutinu Get-Member. Pokud chcete například zobrazit metody a vlastnosti všech objektů v jednotce Env: zadejte:

Get-Item -Path Env:* | Get-Member

Zobrazení proměnných prostředí

Pomocí rutin, které obsahují podstatné jméno položky (rutiny Item), můžete zobrazit a změnit hodnoty proměnných prostředí. Vzhledem k tomu, že proměnné prostředí nemají podřízené položky, výstup Get-Item a Get-ChildItem je stejný.

Když odkazujete na proměnnou prostředí, zadejte název jednotky Env: následovaný názvem proměnné. Pokud chcete například zobrazit hodnotu proměnné prostředí COMPUTERNAME, zadejte:

Get-ChildItem Env:Computername

Pokud chcete zobrazit hodnoty všech proměnných prostředí, zadejte:

Get-ChildItem Env:

Ve výchozím nastavení PowerShell zobrazuje proměnné prostředí v pořadí, ve kterém je načítá. Pokud chcete seznam proměnných prostředí seřadit podle názvu proměnné, předáte výstup příkazu Get-ChildItem rutině Sort-Object. Například z libovolné jednotky PowerShellu zadejte:

Get-ChildItem Env: | Sort Name

K jednotce Env: můžete také přejít pomocí rutiny Set-Location:

Set-Location Env:

Pokud jste na jednotce Env: , můžete z cesty vynechat název jednotky Env: . Pokud chcete například zobrazit všechny proměnné prostředí, zadejte:

Get-ChildItem

Chcete-li zobrazit hodnotu proměnné COMPUTERNAME z jednotky Env: zadejte:

Get-ChildItem ComputerName

Hodnoty proměnných prostředí můžete zobrazit a změnit také bez použití rutiny pomocí analyzátoru výrazů v PowerShellu. Pokud chcete zobrazit hodnotu proměnné prostředí, použijte následující syntaxi:

$Env:<variable-name>

Pokud chcete například zobrazit hodnotu proměnné prostředí WINDIR, zadejte na příkazovém řádku PowerShellu následující příkaz:

$Env:windir

V této syntaxi znaménko dolaru ($) označuje proměnnou a název jednotky označuje proměnnou prostředí.

Změna proměnných prostředí

Pokud chcete provést trvalou změnu proměnné prostředí, uložte změnu do registru pomocí příkazu Systém v Ovládací panely (karta Upřesnit nebo položka Upřesnit nastavení systému).

Když v PowerShellu změníte proměnné prostředí, ovlivní tato změna jenom aktuální relaci. Toto chování se podobá chování příkazu Set v prostředích se systémem Windows a příkazu Setenv v prostředích se systémem UNIX.

Musíte mít také oprávnění ke změně hodnot proměnných. Pokud se pokusíte změnit hodnotu bez dostatečného oprávnění, příkaz selže a PowerShell zobrazí chybu.

Hodnoty proměnných můžete změnit bez použití rutiny pomocí následující syntaxe:

$Env:<variable-name> = "<new-value>"

Například pro připojení "; c:\temp" k hodnotě proměnné prostředí Path použijte následující syntaxi:

$Env:path = $env:path + ";c:\temp"

Ke změně hodnot proměnných prostředí můžete použít také rutiny Item, jako jsou Set-Item, Remove-Item a Copy-Item. Chcete-li například použít rutinu Set-Item k připojení "; c:\temp" k hodnotě proměnné prostředí Path použijte následující syntaxi:

Set-Item -Path Env:Path -Value ($Env:Path + ";C:\Temp")

V tomto příkazu je hodnota uzavřena v závorkách, aby byla interpretována jako jednotka.

Ukládání změn do proměnných prostředí

Pokud chcete vytvořit nebo změnit hodnotu proměnné prostředí v každé relaci Windows PowerShell, přidejte změnu do profilu PowerShellu.

Pokud například chcete přidat adresář C:\Temp do proměnné prostředí Path v každé relaci PowerShellu, přidejte do profilu Windows PowerShell následující příkaz.

$Env:Path = $Env:Path + ";C:\Temp"

Pokud chcete přidat příkaz do existujícího profilu, například do profilu CurrentUser,AllHosts, zadejte:

Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:Path = `
$Env:Path + ";C:\Temp"'

Proměnné prostředí, které ukládají předvolby

Funkce PowerShellu můžou pomocí proměnných prostředí ukládat uživatelské předvolby. Tyto proměnné fungují jako proměnné předvoleb, ale dědí je podřízené relace relací, ve kterých jsou vytvořeny. Další informace o proměnných předvoleb najdete v tématu about_preference_variables.

Mezi proměnné prostředí, které ukládají předvolby, patří:

  • PSExecutionPolicyPreference

    Ukládá zásady spouštění nastavené pro aktuální relaci. Tato proměnná prostředí existuje pouze v případě, že nastavíte zásadu spouštění pro jednu relaci. Můžete to udělat dvěma různými způsoby.

    • Pomocí PowerShell.exe spusťte relaci na příkazovém řádku a pomocí parametru ExecutionPolicy nastavte zásady spouštění pro relaci.

    • Použijte rutinu Set-ExecutionPolicy. Použijte parametr Scope s hodnotou Process.

      Další informace najdete v tématu about_Execution_Policies.

  • PSModulePath

    Ukládá cesty k výchozím adresářům modulu. PowerShell hledá moduly v zadaných adresářích, pokud nezadáte úplnou cestu k modulu.

    Výchozí hodnota $Env:PSModulePath je:

    $HOME\Documents\WindowsPowerShell\Modules; $PSHOME\Modules
    

PowerShell nastaví v registru hodnotu "$PSHOME\Modules". Nastaví hodnotu "$HOME\Documents\WindowsPowerShell\Modules" při každém spuštění PowerShellu.

Kromě toho instalační programy, které instalují moduly v jiných adresářích, jako je adresář Program Files, mohou připojit jejich umístění k hodnotě PSModulePath.

Pokud chcete změnit výchozí adresáře modulu pro aktuální relaci, pomocí následujícího formátu příkazu změňte hodnotu proměnné prostředí PSModulePath.

Pokud například chcete přidat adresář C:\Program Files\Fabrikam\Modules k hodnotě proměnné prostředí PSModulePath, zadejte:

$Env:PSModulePath = $Env:PSModulePath+";C:\Program Files\Fabrikam\Modules"

Středník (;) v příkazu odděluje novou cestu od cesty, která před ní v seznamu předchází.

Pokud chcete změnit hodnotu PSModulePath v každé relaci, přidejte předchozí příkaz do profilu PowerShellu nebo použijte metodu SetEnvironmentVariable třídy Environment.

Následující příkaz používá GetEnvironmentVariable metoda k získání nastavení počítače PSModulePath a SetEnvironmentVariable metoda přidat cestu C:\Program Files\Fabrikam\Modules k hodnotě.

$path = [System.Environment]::GetEnvironmentVariable("PSModulePath",
 "Machine")
[System.Environment]::SetEnvironmentVariable("PSModulePath", $path +
";C:\Program Files\Fabrikam\Modules", "Machine")

Pokud chcete přidat cestu k nastavení uživatele, změňte cílovou hodnotu na Uživatel.

$path = [System.Environment]::GetEnvironmentVariable("PSModulePath",
 "User")
[System.Environment]::SetEnvironmentVariable("PSModulePath", $path +
";$home\Documents\Fabrikam\Modules", "User")

Další informace o metodách třídy System.Environment naleznete v tématu Metody prostředí v MSDN.

Můžete také přidat příkaz, který změní hodnotu do vašeho profilu, nebo pomocí system v Ovládací panely změnit hodnotu proměnné prostředí PSModulePath v registru.

Další informace najdete v tématu about_Modules.

VIZ TAKÉ