Jestem zaskoczony, że nie dostałem odpowiedzi na ten typowy scenariusz po Googling na czas ...Jak ustawić zmienną env w Powershell, jeśli nie istnieje?
Jak można ustawić zmienną środowiskową w Powershell, jeśli nie istnieje?
Jestem zaskoczony, że nie dostałem odpowiedzi na ten typowy scenariusz po Googling na czas ...Jak ustawić zmienną env w Powershell, jeśli nie istnieje?
Jak można ustawić zmienną środowiskową w Powershell, jeśli nie istnieje?
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.