2016-08-13 8 views

Odpowiedz

23

Poniższy kod definiuje zmienną środowiskową FOO, jeśli jeszcze nie istnieje.

if (-not (Test-Path env:FOO)) { $env:FOO = 'bar' } 

Uwaga: Ten nowo zdefiniowana zmienna będzie istnieć tylko dla bieżącego procesui przetwarza każde dziecko tworzy (na przykład po uruchomieniu nowej sesji PowerShell z ISE). Dzięki, PetSerAl.

co następuje głównie przyczyniły przez Ansgar Wiechers z suplementu przez Mathias R. Jessen:

Jeśli chcesz zdefiniować zmienną środowiskową uporczywie, trzeba użyć statycznej SetEnvironmentVariable() sposobu [System.Environment] klasa:

# user environment 
[Environment]::SetEnvironmentVariable('FOO', 'bar', 'User') 

# system environment (requires admin privileges) 
[Environment]::SetEnvironmentVariable('FOO', 'bar', 'Machine') 

Należy pamiętać, że te definicje obowiązują od przyszłe sesji (procesy), tak, aby określa zmienną procesu prąd oraz uruchomić $env:FOO = 'bar'oprócz, która skutecznie same jak [Environment]::SetEnvironmentVariable('FOO', 'bar', 'Process').

Podczas korzystania [Environment]::SetEnvironmentVariable() z User lub Machine komunikat WM_SETTINGCHANGE jest wysyłane do innych aplikacji, aby powiadomić ich o zmianie (choć kilka aplikacji reagować na takich powiadomień).
Nie ma to zastosowania w przypadku kierowania na Process (lub podczas przypisywania do $env:FOO), ponieważ żadne inne aplikacje (procesy) nie widzą tej zmiennej.

See also.