Ik ben erachter gekomen dat het instellen van de omgevingsvariabele PATH alleen van invloed is op de oude opdrachtprompt. PowerShell lijkt andere omgevingsinstellingen te hebben. Hoe kan ik de omgevingsvariabelen voor PowerShell (v1) wijzigen?
Opmerking:
Ik wil mijn wijzigingen permanent maken, zodat ik het niet elke keer dat ik PowerShell uitvoer opnieuw hoef in te stellen. Heeft PowerShell een profielbestand? Zoiets als Bash profiel op Unix?
Als u op een bepaald moment tijdens een PowerShell-sessie tijdelijk aan de omgevingsvariabele PATH moet toevoegen, kunt u het op deze manier doen:
$env:Path += ";C:\Program Files\GnuWin32\bin"
Het veranderen van de eigenlijke omgevingsvariabelen kan worden gedaan door
gebruik te maken van de env: namespace / drive
informatie. Bijvoorbeeld, deze
code zal de pad omgevingsvariabele bijwerken:
$env:Path = "SomeRandomPath"; (replaces existing path)
$env:Path += ";SomeRandomPath" (appends to existing path)
Er zijn manieren om omgevingsinstellingen permanent te maken, maar
als je ze alleen vanuit PowerShell gebruikt, is het waarschijnlijk
veel beter om je profiel te gebruiken om de
instellingen. Bij het opstarten zal PowerShell alle .ps1
bestanden die het vindt in de WindowsPowerShell
directory onder
Mijn Documenten map. Meestal heb je een profile.ps1
bestand daar al. Het pad op mijn computer is
C:\Users\JaredPar\Documents\WindowsPowerShell\profile.ps1
Je kunt gebruikers/systeem omgevingsvariabelen ook permanent wijzigen (d.w.z. ze blijven bestaan na een herstart van de shell) met het volgende:
Wijzig een systeem omgevingsvariabele
[Environment]::SetEnvironmentVariable
("Path", $env:Path, [System.EnvironmentVariableTarget]::Machine)
Wijzig een gebruiker omgevingsvariabele
[Environment]::SetEnvironmentVariable
("INCLUDE", $env:INCLUDE, [System.EnvironmentVariableTarget]::User)
Gebruik van commentaar - voeg toe aan de systeem omgevingsvariabele
[Environment]::SetEnvironmentVariable(
"Path",
[Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::Machine) + ";C:\bin",
[EnvironmentVariableTarget]::Machine)
String-gebaseerde oplossing is ook mogelijk als je geen types wil schrijven
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\bin", "Machine")