Wyświetlanie i modyfikowanie zmiennych środowiskowych

Dyskusja

W plikach wsadowych, zmienne środowiskowe są podstawowym sposobem przechowywania tymczasowych informacji lub przekazywania informacji pomiędzy plikami wsadowymi. Zmienne PowerShella i parametry skryptów są bardziej efektywnymi sposobami rozwiązywania tych problemów, ale zmienne środowiskowe nadal stanowią użyteczny sposób dostępu do typowych ustawień systemowych, takich jak ścieżka systemu, katalog tymczasowy, nazwa domeny, nazwa użytkownika i inne.

PowerShell udostępnia zmienne środowiskowe za pośrednictwem dostawcy środowiska: kontenera, który pozwala pracować ze zmiennymi środowiskowymi podobnie jak z elementami systemu plików lub dostawcami rejestru. Domyślnie PowerShell definiuje env: drive (podobnie jak c: lub d:), który zapewnia dostęp do tych informacji:

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;(...)

Ponieważ jest to zwykły dysk PowerShell, pełny sposób na uzyskanie wartości zmiennej środowiskowej wygląda następująco:

PS > Get-Content Env:\UsernameLee

Jeśli jednak chodzi o zmienne środowiskowe, jest to składnia, której prawie nigdy nie będziesz musiał używać, ze względu na wsparcie PowerShella dla składni zmiennych Get-Content i Set-Content, która skraca to do:

PS > $env:UsernameLee

Składnia ta działa dla wszystkich napędów, ale jest najczęściej używana do uzyskiwania dostępu do zmiennych środowiskowych. Więcej informacji na temat tej składni można znaleźć w temacie Dostęp do informacji o wywołaniu polecenia.

Niektóre zmienne środowiskowe pobierają swoje wartości z kombinacji dwóch miejsc: ustawień całej maszyny i ustawień bieżącego użytkownika. Jeśli chcesz uzyskać dostęp do wartości zmiennych środowiskowych skonfigurowanych specjalnie na poziomie maszyny lub użytkownika, użyj metody ::GetEnvironmentVariable(). Na przykład, jeśli zdefiniowałeś katalog narzędzi w swojej ścieżce, możesz zobaczyć:

PS > ::GetEnvironmentVariable("Path", "User")d:\lee\tools

Aby ustawić na stałe te zmienne środowiskowe specyficzne dla maszyny lub użytkownika, użyj metody ::SetEnvironmentVariable():

::SetEnvironmentVariable(<name>, <value>, <target>)

Parametr target określa, gdzie ta zmienna powinna być przechowywana: User dla bieżącego użytkownika i Machine dla wszystkich użytkowników na maszynie. Na przykład, aby na stałe dodać swój katalog narzędzi do ścieżki użytkownika:

$pathElements = @(::GetEnvironmentVariable("Path", "User") -split ";")$pathElements += "d:\tools"$newPath = $pathElements -join ";"::SetEnvironmentVariable("Path", $newPath, "User")

Więcej informacji na temat modyfikacji ścieżki systemowej, zobacz Modyfikacja ścieżki użytkownika lub systemowej.

Więcej informacji na temat składni zmiennych Get-Content i Set-Content, zobacz Zmienne. Aby uzyskać więcej informacji na temat dostawcy środowiska, wpisz Get-Help About_Environment.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *