Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Korte beschrijving
Hierin wordt beschreven hoe u omgevingsvariabelen opent en beheert in PowerShell.
Lange beschrijving
In omgevingsvariabelen worden gegevens opgeslagen die worden gebruikt door het besturingssysteem en andere programma's. PowerShell maakt de volgende omgevingsvariabelen:
POWERSHELL_TELEMETRY_OPTOUTPOWERSHELL_DISTRIBUTION_CHANNELPOWERSHELL_UPDATECHECKPSExecutionPolicyPreferencePSModulePathPSModuleAnalysisCachePathPSDisableModuleAnalysisCacheCleanup
Zie de PowerShell-omgevingsvariabelen van dit artikel voor volledige beschrijvingen van deze variabelen.
PowerShell kan omgevingsvariabelen openen en beheren op een van de ondersteunde besturingssysteemplatforms. Met de PowerShell Environment-provider kunt u omgevingsvariabelen in de huidige console ophalen, toevoegen, wijzigen, wissen en verwijderen.
Notitie
In tegenstelling tot Windows zijn namen van omgevingsvariabelen in macOS en Linux hoofdlettergevoelig. En zijn bijvoorbeeld $Env:Path$Env:PATH verschillende omgevingsvariabelen op niet-Windows-platforms.
Omgevingsvariabelen, in tegenstelling tot andere typen variabelen in PowerShell, worden altijd opgeslagen als tekenreeksen. In tegenstelling tot andere variabelen worden ze overgenomen door onderliggende processen, zoals lokale achtergrondtaken en de sessies waarin moduleleden worden uitgevoerd. Hierdoor zijn omgevingsvariabelen geschikt voor het opslaan van waarden die nodig zijn in zowel bovenliggende als onderliggende processen.
In Windows kunnen omgevingsvariabelen worden gedefinieerd in drie bereiken:
- Bereik van machine (of systeem)
- Gebruikersbereik
- Procesbereik
Het bereik Proces bevat de omgevingsvariabelen die beschikbaar zijn in het huidige proces of de PowerShell-sessie. Deze lijst met variabelen wordt overgenomen van het bovenliggende proces en wordt samengesteld uit de variabelen in de bereiken Machine en Gebruiker .
Wanneer u omgevingsvariabelen wijzigt in PowerShell, is de wijziging alleen van invloed op de huidige sessie. Dit gedrag lijkt op het gedrag van de set-opdracht in de Windows Command Shell en de setenv-opdracht in Unix-omgevingen. Als u waarden in de bereiken machine of gebruiker wilt wijzigen, moet u de methoden van de klasse System.Environment gebruiken.
Als u wijzigingen wilt aanbrengen in variabelen binnen het bereik van de machine, moet u ook gemachtigd zijn. Als u een waarde zonder voldoende machtigingen probeert te wijzigen, mislukt de opdracht en wordt er een fout weergegeven in PowerShell.
PowerShell biedt verschillende methoden voor het gebruik en beheren van omgevingsvariabelen.
- De syntaxis van de variabele
- De omgevingsprovider en item-cmdlets
- De klasse .NET System.Environment
De syntaxis van de variabele gebruiken
U kunt de waarden van omgevingsvariabelen weergeven en wijzigen met de volgende syntaxis:
$Env:<variable-name>
Als u bijvoorbeeld de waarde van de windir omgevingsvariabele wilt weergeven:
$Env:windir
C:\Windows
In deze syntaxis geeft het dollarteken ($) een variabele aan en de stationsnaam (Env:) geeft een omgevingsvariabele aan, gevolgd door de naam van de variabele (windir).
U kunt de waarde van omgevingsvariabelen maken en bijwerken met de volgende syntaxis:
$Env:<variable-name> = "<new-value>"
Als u bijvoorbeeld de Foo omgevingsvariabele wilt maken:
$Env:Foo = 'An example'
Omdat omgevingsvariabelen altijd tekenreeksen zijn, kunt u ze gebruiken zoals elke andere variabele die een tekenreeks bevat. Voorbeeld:
"The 'Foo' environment variable is set to: $Env:Foo"
$Env:Foo += '!'
$Env:Foo
The 'Foo' environment variable is set to: An example
An example!
Vanaf PowerShell 7.5 kunt u een omgevingsvariabele instellen op een lege tekenreeks. Als u een omgevingsvariabele instelt om deze uit de huidige sessie te $null verwijderen. Voorbeeld:
PS> $env:TEST = ''
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST
PS> $env:TEST = $null
PS> $env:TEST.Length
0
PS> Get-ChildItem env:TEST
Get-ChildItem: Cannot find path 'TEST' because it does not exist.
Zie about_Variables voor meer informatie over variabelen in PowerShell.
De cmdlets Omgevingsprovider en Item gebruiken
De omgevingsprovider van PowerShell biedt u een interface voor interactie met omgevingsvariabelen in een indeling die lijkt op een bestandssysteemstation. Hiermee kunt u omgevingsvariabelen en -waarden ophalen, toevoegen, wijzigen, wissen en verwijderen in PowerShell.
Als u bijvoorbeeld de Foo omgevingsvariabele wilt maken met een waarde van Bar:
New-Item -Path Env:\Foo -Value 'Bar'
Name Value
---- -----
Foo Bar
U kunt ook de omgevingsvariabele kopiëren met Copy-Item, de waarde van een omgevingsvariabele instellen met Set-Item, omgevingsvariabelen weergeven met Get-Itemen de omgevingsvariabele verwijderen met Remove-Item.
Copy-Item -Path Env:\Foo -Destination Env:\Foo2 -PassThru
Set-Item -Path Env:\Foo2 -Value 'BAR'
Get-Item -Path Env:\Foo*
Remove-Item -Path Env:\Foo* -Verbose
Name Value
---- -----
Foo2 Bar
Name Value
---- -----
Foo2 BAR
Foo Bar
VERBOSE: Performing the operation "Remove Item" on target "Item: Foo2".
VERBOSE: Performing the operation "Remove Item" on target "Item: Foo".
Gebruik de Get-ChildItem cmdlet om een volledige lijst met omgevingsvariabelen weer te geven:
Get-ChildItem Env:
Vanaf PowerShell 7.5 kunt u een omgevingsvariabele instellen op een lege tekenreeks met behulp van de omgevingsprovider en Set-Item cmdlet. Als u een omgevingsvariabele instelt om deze uit de huidige sessie te $null verwijderen. Voorbeeld:
PS> Set-Item env:TEST 'Foo'
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST Foo
PS> Set-Item env:TEST ''
PS> Get-ChildItem env:TEST
Name Value
---- -----
TEST
PS> Set-Item -Path env:TEST -Value $null
PS> Get-ChildItem env:TEST
Get-ChildItem: Cannot find path 'TEST' because it does not exist.
Zie about_Environment_Provider voor meer informatie over het gebruik van de omgevingsprovider voor het beheren van omgevingsvariabelen.
De System.Environment-methoden gebruiken
De klasse System.Environment biedt de en GetEnvironmentVariable() methoden voor het SetEnvironmentVariable() ophalen en wijzigen van omgevingsvariabelen.
In het volgende voorbeeld wordt een nieuwe omgevingsvariabele gemaakt, Foomet een waarde van Bar en retourneert vervolgens de bijbehorende waarde.
[Environment]::SetEnvironmentVariable('Foo','Bar')
[Environment]::GetEnvironmentVariable('Foo')
Bar
Vanaf PowerShell 7.5 kunt u een omgevingsvariabele instellen op een lege tekenreeks met behulp van de SetEnvironmentVariable() methode en een lege tekenreeks opgeven of $null voor de waarde van de variabele. Voorbeeld:
PS> [Environment]::SetEnvironmentVariable('Foo','Bar')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo Bar
PS> [Environment]::SetEnvironmentVariable('Foo','')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo
PS> [Environment]::SetEnvironmentVariable('Foo','bar')
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo bar
PS> [Environment]::SetEnvironmentVariable('Foo',$null)
PS> Get-ChildItem env:Foo
Name Value
---- -----
Foo
Notitie
In tegenstelling tot de syntaxis van de variabele en providercases, wordt de omgevingsvariabele niet verwijderd als u de waarde toewijst aan $null het gebruik van de SetEnvironmentVariable() methode.
Zie Omgevingsmethoden voor meer informatie over de methoden van de klasse System.Environment.
Permanente omgevingsvariabelen maken in Windows
In Windows zijn er drie methoden voor het aanbrengen van een permanente wijziging in een omgevingsvariabele:
- Deze instellen in uw profiel
-
SetEnvironmentVariable()De methode gebruiken - Systeem Configuratiescherm gebruiken
Omgevingsvariabelen instellen in uw profiel
Elke omgevingsvariabele die u aan uw PowerShell-profiel toevoegt of wijzigt, is beschikbaar in elke sessie waarmee uw profiel wordt geladen. Deze methode werkt voor elke versie van PowerShell op elk ondersteund platform.
Als u bijvoorbeeld de CompanyUri omgevingsvariabele wilt maken en de PATH omgevingsvariabele wilt bijwerken om de C:\Tools map op te nemen, voegt u de volgende regels toe aan uw PowerShell-profiel:
$Env:CompanyUri = 'https://internal.contoso.com'
$Env:PATH += ';C:\Tools'
Notitie
In Linux of macOS wordt de dubbele punt (:) gebruikt in plaats van een puntkomma(;) om een nieuw pad te scheiden van het pad dat eraan voorafgaat in de lijst.
U kunt het pad naar uw PowerShell-profiel ophalen met de $PROFILE automatische variabele. Zie about_Profiles voor meer informatie over profielen.
Omgevingsvariabelen instellen met SetEnvironmentVariable()
In Windows kunt u een bereik voor de SetEnvironmentVariable() methode opgeven als de derde parameter om de omgevingsvariabele in dat bereik in te stellen. De machine- en gebruikersbereiken blijven beide buiten het huidige proces behouden, zodat u een nieuwe of gewijzigde omgevingsvariabele kunt opslaan.
Als u bijvoorbeeld een nieuwe omgevingsvariabele Foo wilt opslaan met de waarde Barin het machinebereik:
[Environment]::SetEnvironmentVariable('Foo', 'Bar', 'Machine')
U kunt een omgevingsvariabele verwijderen uit het bereik van de gebruiker of machine door de waarde van de variabele in te stellen op een lege tekenreeks.
[Environment]::SetEnvironmentVariable('Foo', '', 'Machine')
Omgevingsvariabelen instellen in het systeem Configuratiescherm
In het systeem Configuratiescherm kunt u bestaande omgevingsvariabelen toevoegen of bewerken in de bereiken Gebruiker en Systeem (Machine). Windows schrijft deze waarden naar het register, zodat deze behouden blijven tijdens sessies en het systeem opnieuw wordt opgestart.
Als u een permanente wijziging wilt aanbrengen in een omgevingsvariabele in Windows met behulp van het systeem Configuratiescherm:
- Open het systeem Configuratiescherm.
- Selecteer Systeem.
- Selecteer Geavanceerde systeeminstellingen.
- Ga naar het tabblad Geavanceerd .
- Omgevingsvariabelen selecteren....
- Breng uw wijzigingen aan.
Permanente omgevingsvariabelen maken op niet-Windows-platforms
Linux en macOS hebben configuratiebestanden en scripts die het besturingssysteem gebruikt om omgevingsvariabelen in te stellen voordat een toepassing wordt gestart.
Wanneer u PowerShell als standaardshell (aanmeldingsshell) uitvoert, kunt u omgevingsvariabelen definiëren in de globale initialisatiebestanden die worden ondersteund door het besturingssysteem. In Linux kunt u bijvoorbeeld omgevingsvariabelen toevoegen aan het /etc/environment bestand of een script maken waarmee omgevingsvariabelen worden ingesteld en in de /etc/profile.d map worden geplaatst. In macOS kunt u omgevingsvariabelen toevoegen aan het /etc/profile bestand.
Wanneer u PowerShell vanuit een andere shell start, kunt u omgevingsvariabelen definiëren in de shellspecifieke initialisatiebestanden die worden gebruikt door niet-aanmeldingsshells, zoals ~/.bashrc voor bash of ~/.zshrc voor zsh.
Zie de documentatie voor uw besturingssysteem en de standaardshell voor meer informatie.
PowerShell-omgevingsvariabelen
PowerShell-functies kunnen omgevingsvariabelen gebruiken om gebruikersvoorkeuren op te slaan. Deze variabelen werken als voorkeursvariabelen, maar ze worden overgenomen door onderliggende sessies van de sessies waarin ze worden gemaakt. Zie about_Preference_Variables voor meer informatie over voorkeursvariabelen.
De omgevingsvariabelen die voorkeuren opslaan, zijn onder andere:
POWERSHELL_TELEMETRY_OPTOUTAls u zich wilt afmelden voor telemetrie, stelt u de omgevingsvariabele
truein op ,yesof1. Zie about_Telemetry voor meer informatie.Voordat deze omgevingsvariabele effect heeft, moet deze worden ingesteld voordat het PowerShell-proces wordt gestart. Zie de vorige secties voor informatie over het maken van permanente omgevingsvariabelen.
POWERSHELL_DISTRIBUTION_CHANNELVanaf PowerShell 7.2 wordt deze omgevingsvariabele ingesteld door de installatiepakketten om de methode en bron van installatie voor PowerShell vast te leggen.
Deze informatie wordt opgenomen in de telemetriegegevens die naar Microsoft worden verzonden. Gebruikers mogen deze waarde niet wijzigen.
POWERSHELL_UPDATECHECKHet gedrag van de updatemelding kan worden gewijzigd met behulp van de
POWERSHELL_UPDATECHECKomgevingsvariabele. Zie about_Update_Notifications voor meer informatie.De volgende waarden worden ondersteund:
-
Offschakelt de updatemeldingsfunctie uit -
Defaultis hetzelfde als het niet definiërenPOWERSHELL_UPDATECHECKvan:- GA-releases melden updates voor ALGEMENE beschikbaarheidsreleases
- Preview-/RC-releases melden updates voor ALGEMENE beschikbaarheid en preview-releases
-
LTSgeeft alleen meldingen over updates voor ltS-releases (long-term-servicing)
Niet-standaardwaarden van omgevingsvariabele moeten worden ingesteld voordat u het PowerShell-proces start. Zie de vorige secties voor informatie over het maken van permanente omgevingsvariabelen.
-
PSExecutionPolicyPreferenceSlaat het uitvoeringsbeleid op dat is ingesteld voor de huidige sessie. Deze omgevingsvariabele bestaat alleen wanneer u een uitvoeringsbeleid instelt voor één sessie. U kunt dit op twee verschillende manieren doen.
Start een sessie vanaf de opdrachtregel met behulp van de parameter ExecutionPolicy om het uitvoeringsbeleid voor de sessie in te stellen.
Gebruik de
Set-ExecutionPolicycmdlet. Gebruik de parameter Bereik met een waarde vanProcess.Stel de omgevingsvariabele handmatig in. Als u de waarde van deze variabele wijzigt, wordt het uitvoeringsbeleid van het huidige proces gewijzigd.
Deze informatie is alleen van toepassing op het Windows-platform. Raadpleeg about_Execution_Policies voor meer informatie.
PSModulePathDe
$Env:PSModulePathomgevingsvariabele bevat een lijst met maplocaties die worden doorzocht om modules en resources te vinden. In Windows wordt de lijst met maplocaties gescheiden door het puntkomma (;) teken. Op niet-Windows-platforms scheidt de dubbele punt (:) de maplocaties in de omgevingsvariabele.De effectieve locaties waaraan is toegewezen
$Env:PSModulePath, zijn standaard:Systeembrede locaties: deze mappen bevatten modules die worden verzonden met PowerShell. De modules worden opgeslagen op de
$PSHOME\Moduleslocatie. Dit is ook de locatie waar de Windows-beheermodules zijn geïnstalleerd.Door de gebruiker geïnstalleerde modules: dit zijn modules die door de gebruiker zijn geïnstalleerd.
Install-Moduleheeft een bereikparameter waarmee u kunt opgeven of de module is geïnstalleerd voor de huidige gebruiker of voor alle gebruikers. Zie Install-Module voor meer informatie.- In Windows is de locatie van het gebruikersspecifieke CurrentUser-bereik de
$HOME\Documents\PowerShell\Modulesmap. De locatie van het bereik AllUsers is$Env:ProgramFiles\PowerShell\Modules. - Op niet-Windows-systemen is de locatie van het gebruikersspecifieke CurrentUser-bereik de
$HOME/.local/share/powershell/Modulesmap. De locatie van het bereik AllUsers is/usr/local/share/powershell/Modules.
- In Windows is de locatie van het gebruikersspecifieke CurrentUser-bereik de
Daarnaast kunnen installatieprogramma's die modules installeren in andere mappen, zoals de map Program Files, hun locaties toevoegen aan de waarde van
$Env:PSModulePath.Zie about_PSModulePath voor meer informatie.
PSModuleAnalysisCachePathPowerShell biedt controle over het bestand dat wordt gebruikt voor het opslaan van gegevens over modules en hun cmdlets. De cache wordt tijdens het opstarten gelezen tijdens het zoeken naar een opdracht en wordt enige tijd op een achtergrondthread geschreven nadat een module is geïmporteerd.
De standaardlocatie van de cache is:
- Windows PowerShell 5.1:
$Env:LOCALAPPDATA\Microsoft\Windows\PowerShell - PowerShell 6.0 en hoger:
$Env:LOCALAPPDATA\Microsoft\PowerShell - Niet-Windows-standaardinstelling:
~/.cache/powershell
De standaardbestandsnaam voor de cache is
ModuleAnalysisCache. Wanneer u meerdere exemplaren van PowerShell hebt geïnstalleerd, bevat de bestandsnaam een hexadecimaal achtervoegsel, zodat er per installatie een unieke bestandsnaam is.Notitie
Als opdrachtdetectie niet goed werkt, bijvoorbeeld als IntelliSense opdrachten weergeeft die niet bestaan, kunt u het cachebestand verwijderen. De cache wordt opnieuw gemaakt wanneer u PowerShell de volgende keer start.
Als u de standaardlocatie van de cache wilt wijzigen, stelt u de omgevingsvariabele in voordat u PowerShell start. De waarde moet een volledig pad (inclusief bestandsnaam) noemen dat PowerShell gemachtigd is om bestanden te maken en te schrijven.
Wijzigingen in deze omgevingsvariabele zijn alleen van invloed op onderliggende processen. Zie de vorige secties voor informatie over het maken van permanente omgevingsvariabelen.
Als u de bestandscache wilt uitschakelen, stelt u deze waarde in op een ongeldige locatie, bijvoorbeeld:
# `NUL` here is a special device on Windows that can't be written to, # on non-Windows you would use `/dev/null` $Env:PSModuleAnalysisCachePath = 'NUL'Hiermee stelt u het pad in op het NUL-apparaat . PowerShell kan niet naar het pad schrijven, maar er wordt geen fout geretourneerd. U kunt de fouten zien die zijn gerapporteerd met behulp van een tracer:
Trace-Command -PSHost -Name Modules -Expression { Import-Module Microsoft.PowerShell.Management -Force }- Windows PowerShell 5.1:
PSDisableModuleAnalysisCacheCleanupBij het schrijven van de moduleanalysecache controleert PowerShell op modules die niet meer bestaan om onnodig grote cache te voorkomen. Soms zijn deze controles niet wenselijk. In dat geval kunt u ze uitschakelen door deze omgevingsvariabelewaarde in te stellen op
1.Het instellen van deze omgevingsvariabele wordt van kracht voor volgende opschoningsevenementen in het huidige proces. Om ervoor te zorgen dat opschonen is uitgeschakeld bij het opstarten, moet u de omgevingsvariabele instellen voordat u PowerShell start. Zie de vorige secties voor informatie over het maken van permanente omgevingsvariabelen.
Andere omgevingsvariabelen die worden gebruikt door PowerShell
Padgegevens
PATHDe
$Env:PATHomgevingsvariabele bevat een lijst met maplocaties waarnaar het besturingssysteem zoekt naar uitvoerbare bestanden. In Windows wordt de lijst met maplocaties gescheiden door het puntkomma (;) teken. Op niet-Windows-platforms scheidt de dubbele punt (:) de maplocaties in de omgevingsvariabele.PATHEXTDe
$Env:PATHEXTvariabele bevat een lijst met bestandsextensies die door Windows worden beschouwd als uitvoerbare bestanden. Wanneer een scriptbestand met een van de vermelde extensies wordt uitgevoerd vanuit PowerShell, wordt het script uitgevoerd in de huidige console- of terminalsessie. Als de bestandsextensie niet wordt vermeld, wordt het script uitgevoerd in een nieuwe consolesessie.Als u ervoor wilt zorgen dat scripts voor een andere scripttaal worden uitgevoerd in de huidige consolesessie, voegt u de bestandsextensie toe die wordt gebruikt door de scripttaal. Als u bijvoorbeeld Python-scripts wilt uitvoeren in de huidige console, voegt u de
.pyextensie toe aan de omgevingsvariabele. Voor Windows om de.pyextensie te ondersteunen als een uitvoerbaar bestand moet u de bestandsextensie registreren met behulp van deftypeenassocopdrachten van de CMD-opdrachtshell. PowerShell heeft geen directe methode om de bestandshandler te registreren. Zie de documentatie voor de opdracht ftype voor meer informatie.PowerShell-scripts starten altijd in de huidige consolesessie. U hoeft de
.ps1extensie niet toe te voegen.XDGVariabelenOp niet-Windows-platforms gebruikt PowerShell de volgende XDG-omgevingsvariabelen zoals gedefinieerd door de XDG Base Directory-specificatie.
XDG_CONFIG_HOMEXDG_DATA_HOMEXDG_CACHE_HOME
Terminalfuncties
Vanaf PowerShell 7.2 kunnen de volgende omgevingsvariabelen worden gebruikt om de functies van de virtuele terminal te beheren, zoals ANSI-escapereeksen die uitvoer kleuren. Ondersteuning voor ANSI-escapereeksen kan worden uitgeschakeld met behulp van de TERM of NO_COLOR omgevingsvariabelen.
TERMDe volgende waarden voor het wijzigen van
$Env:TERMhet gedrag zijn als volgt:-
dumb-Ingesteld$Host.UI.SupportsVirtualTerminal = $false -
xterm-mono-Ingesteld$PSStyle.OutputRendering = PlainText -
xterm-Ingesteld$PSStyle.OutputRendering = PlainText
-
NO_COLORAls
$Env:NO_COLORdeze bestaat,$PSStyle.OutputRenderingwordt deze ingesteld opPlainText. Zie voor meer informatie over deNO_COLORomgevingsvariabele https://no-color.org/.