PowerShell Omgevingsvariabelen: Een Diepe Duik

Gebruik van PowerShell om Windows omgevingsvariabelen in te stellen, omgevingsvariabelen te lezen en nieuwe omgevingsvariabelen aan te maken is eenvoudig zodra je het trucje kent. De trucjes die je leert in dit artikel zullen werken voor Windows 10 omgevingsvariabelen evenals voor elke Windows client/server na Windows 7 SP1/Windows Server 2008.

PowerShell biedt vele verschillende manieren om te interageren met Windows omgevingsvariabelen vanuit de $env: PSDrive, het register, en de [System.Environment] .NET class. Je leert over elke methode inclusief het begrijpen van de reikwijdte van omgevingsvariabelen in deze stap-voor-stap handleiding.

Aannames

Gedurende dit artikel zal ik Windows PowerShell 5.1 op Windows 10 gebruiken. Maar als je een versie van Windows PowerShell hebt die later is dan v3 op Windows 7 SP1 of later, zouden de technieken die ik je zo ga laten zien prima moeten werken.

Wat zijn Omgevingsvariabelen?

Omgevingsvariabelen, zoals de naam al doet vermoeden, slaan informatie op over de omgeving die wordt gebruikt door Windows en applicaties. Omgevingsvariabelen kunnen worden benaderd door grafische applicaties zoals Windows Verkenner en platte teksteditors zoals Kladblok, evenals cmd.exe en PowerShell.

Het gebruik van omgevingsvariabelen helpt je om het hard coderen van bestandspaden, gebruikers- of computernamen en nog veel meer te vermijden in je PowerShell scripts of modules.

Veelvoorkomende Omgevingsvariabelen

Als je begint met het leren werken met omgevingsvariabelen in PowerShell, zul je veel verschillende variabelen tegenkomen. Sommige zijn nuttiger dan andere. Hieronder staat een lijst met enkele veelvoorkomende omgevingsvariabelen en hun gebruik ter referentie.

Variable Usage
ClientName The name of the remote computer connected via a Remote Desktop session.
SessionName This helps to identify if the current Windows session is regarded by the operating system as running at the console. For console sessions SessionName will be ‘Console’. Enhanced Session connections to Hyper-V Virtual Machines do not report SessionName as ‘Console’, whereas Standard Sessions do.
ComputerName The name of the computer.
SystemRoot and Windir The path to the current Windows installation.
ProgramFiles and ProgramFiles(x86) The default locations for x64 and x86 programs.
ProgramW6432 The default location for programs, avoiding 32/64 bit redirection. This variable only applies for 32 bit processes running on a 64 bit platform. This means that you can use it to identify when a 32 bit instance of PowerShell is running on a 64 bit system.
UserDNSDomain The Fully Qualified Domain Name of the Active Directory domain that the current user logged on to. Only present for domain logons.
UserDomain The NETBIOS-style name of the domain that the current user logged on to. Can be a computer name if there’s no domain.
UserDomainRoamingProfile The location of the central copy of the roaming profile for the user, if any. Only present for domain logons.
UserName The name of the currently logged on user.
UserProfile The location of the profile of the current user on the local computer.

Omgevingsvariabele Scopes

Er zijn drie scopes van omgevingsvariabelen. Denk aan scopes als lagen van variabelen die zich opstapelen om een totaalbeeld te geven. Gecombineerd bieden deze “lagen” veel verschillende omgevingsvariabelen aan elk lopend proces in Windows.

Omgevingsvariabele Scope “Hiërarchie”

Elke van deze “lagen” combineert of overschrijft elkaar. Ze zijn gedefinieerd in een hiërarchie zoals: machine –> gebruiker –> proces waarbij elke gescande variabele de ouderlijke variabele overschrijft als deze bestaat in de ouderlijke scope.

Bijvoorbeeld, een veelvoorkomende omgevingsvariabele is TEMP. Deze variabele slaat het mapadres op naar de lokale tijdelijke map van Windows. Deze omgevingsvariabele is ingesteld op:

  • C:\WINDOWS\TEMP in the machine scope
  • C:\Users\<username>\AppData\Local\Temp in the user scope
  • C:\Users\<username>\AppData\Local\Temp in the process scope.

Als er geen TEMP omgevingsvariabele is ingesteld in de gebruiker scope, dan is het eindresultaat C:\WINDOWS\TEMP.

Omgevingsvariabele Scope Types

Er zijn drie verschillende omgevingsvariabele scopes in Windows.

Machine

Omgevingsvariabelen in de machine scope zijn geassocieerd met de lopende instantie van Windows. Elk gebruikersaccount kan deze lezen, maar instellen, wijzigen of verwijderen moet worden gedaan met verhoogde rechten.

Gebruiker

Omgevingsvariabelen in het gebruiker-bereik zijn gekoppeld aan de gebruiker die het huidige proces uitvoert. Gebruiker-variabelen overschrijven machine-gerichte variabelen met dezelfde naam.

Opmerking: Microsoft raadt aan dat de waarden van machine- en gebruiker-omgevingsvariabelen niet meer dan 2048 tekens bevatten.

Proces

Omgevingsvariabelen in het proces-bereik zijn een combinatie van de machine– en gebruiker-bereiken, samen met enkele variabelen die Windows dynamisch aanmaakt.

Hieronder staat een lijst van omgevingsvariabelen die beschikbaar zijn voor een lopend proces. Al deze variabelen worden dynamisch aangemaakt.

  • ALLUSERSPROFILE
  • APPDATA
  • COMPUTERNAME
  • HOMEDRIVE
  • HOMEPATH
  • LOCALAPPDATA
  • LOGONSERVER
  • PROMPT
  • PUBLIC
  • SESSION
  • SystemDrive
  • SystemRoot
  • USERDNSDOMAIN
  • USERDOMAIN
  • USERDOMAIN_ROAMINGPROFILE
  • USERNAME
  • USERPROFILE

Omgevingsvariabelen in het register

Omgevingsvariabelen worden opgeslagen op twee registerlocaties, een voor het gebruikersbereik en een voor het machinebereik.

Gebruik het register niet om omgevingsvariabelen te beheren

Er is een addertje onder het gras bij het wijzigen van variabelen in het register. Lopende processen zullen geen wijzigingen zien in de variabelen in het register. Processen zien alleen de registervariabelen en waarden die aanwezig waren toen het proces werd gestart, tenzij Windows hen op de hoogte stelt van een wijziging.

In plaats van het register rechtstreeks te wijzigen, kunt u in plaats daarvan een .NET-klasse gebruiken. De .NET-klasse [System.Environment] kan machine- en gebruikersvariabelen van het omgevingstype wijzigen en het registerbeheer voor u afhandelen.

Het direct wijzigen van omgevingsvariabelen in het register heeft geen zin. De .NET-klasse biedt een eenvoudigere, door Microsoft ondersteunde aanpak. U leert later in dit artikel hoe u de .NET-klasse [System.Environment] kunt gebruiken.

Locaties en opvragen van omgevingsvariabelen in het register

I hope you’ve been convinced to not modify the registry directly but if you’d like to take a peek at what’s in there, you can find all user environment variables in the HKEY_CURRENT_USER\Environment key. Machine-scoped environment variables are stored at HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment.

In een van deze registersleutels bevinden zich registersleutels van het type REG_SZ of REG_EXPAND_SZ. REG_EXPAND_SZ waarden bevatten omgevingsvariabelen die als onderdeel van hun waarde zijn ingebed. Deze omgevingsvariabelen worden uitgebreid wanneer de waarde wordt opgehaald.

Om dit te demonstreren, gebruikt u het hulpprogramma REG. Dit is een klein commandoregelhulpprogramma dat wordt meegeleverd met Windows.

Raadpleeg de omgevingsvariabele TEMP zoals hieronder weergegeven. Voer REG uit met de QUERY-parameter om de waarde van de TEMP-variabele op te halen.

> REG QUERY HKCU\Environment /V TEMP

HKEY_CURRENT_USER\Environment     
    TEMP    REG_EXPAND_SZ    %USERPROFILE%\AppData\Local\Temp

Soms zult u omgevingsvariabelen opmerken die zijn omgeven door percentage symbolen (%COMPUTERNAME%), zoals hierboven. Dit is de ouderwetse manier om omgevingsvariabelen weer te geven via cmd.exe en batchbestanden. Weet dat PowerShell dit formaat niet herkent.

Het hulpprogramma REG stelt ons in staat om de oorspronkelijke waarde van de registerwaarde te zien. Het waarde type is REG_EXPAND_SZ en de waarde bevat de omgevingsvariabele %USERPROFILE%.

Als u liever PowerShell wilt gebruiken om de registerwaarde op te halen, kunt u dat doen met behulp van het Get-Item-cmdlet zoals hieronder getoond.

PS51> Get-ItemProperty -Path HKCU:\Environment -Name TEMP

TEMP         : C:\Users\<your username>\AppData\Local\Temp
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\Environment
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER
PSChildName  : Environment
PSDrive      : HKCU
PSProvider   : Microsoft.PowerShell.Core\Registry

Bekijk en stel Windows-omgevingsvariabelen in via de GUI

Om een GUI-weergave van de gebruikers- en systeemomgevingsvariabelen te zien, voert u SystemPropertiesAdvanced.exe uit vanuit PowerShell, een opdrachtprompt of vanuit Windows Key+R om het tabblad Geavanceerde systeemeigenschappen weer te geven. Klik op de knop Omgevingsvariabelen, die wordt gemarkeerd in de onderstaande afbeelding.

The System Properties dialog, Advanced tab

Het dialoogvenster Omgevingsvariabelen, hieronder getoond, stelt u in staat om gebruikers- en machinegerichte omgevingsvariabelen te bekijken, maken en wijzigen. Merk op dat het dialoogvenster verwijst naar machinegerichte variabelen als Systeemvariabelen.

The Environment Variables dialog

Nu u een begrip heeft van omgevingsvariabelen, laten we overgaan naar waarvoor u hier bent, het beheren ervan met PowerShell!

Er zijn verschillende manieren waarop u kunt interageren met omgevingsvariabelen met behulp van PowerShell.

  • De Env: PSDrive en Provider – op sessie gebaseerd. Stelt alleen de waarden van omgevingsvariabelen in voor de huidige PowerShell-sessie
  • $env: variabelen – op sessie gebaseerd. Stelt alleen de waarden van omgevingsvariabelen in voor de huidige PowerShell-sessie
  • De [System.Environment] .NET-klasse – hiermee kunt u gebruikers- en systeemomgevingsvariabelen behouden tussen sessies en herstarts

De Env: PSDrive en Provider

Een van de beste manieren om omgevingsvariabelen te lezen, is een PowerShell-concept dat bekend staat als PowerShell-drives (PS-drives). Een PS-drive stelt u in staat om omgevingsvariabelen te behandelen alsof ze een bestandssysteem zijn via de Env: drive.

Overschakelen naar de Env: Drive

Net als alle PS-drives verwijst u ernaar via paden zoals Env:\TEMP, Env:\COMPUTERNAME, enz. Maar om wat toetsaanslagen te besparen, schakelt u over naar de Env: drive zoals u dat zou doen bij elk bestandssysteemstation, zoals hieronder wordt getoond.

PS51> cd Env:
PS51 Env:\>

## of

PS51> Set-Location Env:
PS Env:\>

Tab-completie met de Env: Drive

U kunt dezelfde opdrachten gebruiken die u zou gebruiken om toegang te krijgen tot een bestandssysteem, zoals `Get-Item` en `Get-ChildItem` om toegang te krijgen tot omgevingsvariabelen. Maar in plaats van het bestandssysteem, leest u de `Env:`-schijf.

Omdat omgevingsvariabelen worden opgeslagen in een PS-schijf, kunt u de tab-completion-functie van PowerShell gebruiken om door de beschikbare variabelen te bladeren, zoals hieronder wordt getoond.

Env: tab completion – finding environment variables starting with the letter C

Laten we nu eens kijken naar een paar voorbeelden van hoe u de `Env:` PS-schijf kunt gebruiken om met omgevingsvariabelen te werken.

Omgevingsvariabelen vermelden met `Env:`

PS51> Get-Item -Path Env:
PS51> Get-Item -Path Env:USERNAME

Omgevingsvariabelen vermelden met een wildcard met `Env:`

PS51> Get-Item -Path Env:user*

Omgevingsvariabele waarden vinden met `Env:`

De resultaten van deze opdrachten zijn key/value `[System.Collections.DictionaryEntry]` .NET-objecten. Deze objecten bevatten de naam van de omgevingsvariabele in het `Name`-eigenschap en de waarde in het `Value`-eigenschap.

U kunt een specifieke waarde van een omgevingsvariabele benaderen door de referentie naar de `Get-Item`-opdracht tussen haakjes te plaatsen en het `Value`-eigenschap zoals hieronder te refereren:

PS51> (Get-Item -Path Env:computername).Value
MYCOMPUTERHOSTNAME

In situaties waarin je alleen bepaalde omgevingsvariabelen wilt teruggeven, gebruik standaard PowerShell-cmdlets zoals Select-Object en Where-Object om de objecten geselecteerd en gefilterd door de Env:-provider te selecteren.

In het onderstaande voorbeeld wordt alleen de omgevingsvariabele COMPUTERNAME teruggegeven.

PS51> Get-ChildItem -Path Env: | Where-Object -Property Name -eq 'COMPUTERNAME'

Als alternatieve methode kun je de Get-Content-cmdlet gebruiken. Deze cmdlet retourneert een [String]-object dat de waarde van de omgevingsvariabele bevat. Dit object is eenvoudiger te verwerken omdat het alleen de waarde retourneert, in plaats van een object met Name– en Value-eigenschappen.

PS51> Get-Content -Path Env:\COMPUTERNAME

Demo: Invoegen van omgevingswaarden in een tekenreeks

Met Get-Content kun je de waarde van een omgevingsvariabele vinden en bijvoorbeeld de omgevingsvariabele COMPUTERNAME in een tekstreeks invoegen.

PS51> 'Computer Name is: {0}' -f (Get-Content -Path Env:COMPUTERNAME)
Computer Name is: MYCOMPUTER

Het instellen van een omgevingsvariabele (en maken) met Env:

Maak nieuwe omgevingsvariabelen met PowerShell met behulp van de New-Item-cmdlet. Geef de naam van de omgevingsvariabele op in de vorm van Env:\<EnvVarName> voor de Name-waarde en de waarde van de omgevingsvariabele voor de Value-parameter zoals hieronder getoond.

PS51> New-Item -Path Env:\MYCOMPUTER -Value MY-WIN10-PC
Name                           Value
----                           -----
MYCOMPUTER                     MY-WIN10-PC

Gebruik de Set-item cmdlet om een omgevingsvariabele in te stellen, of maak een nieuwe aan als deze nog niet bestaat. Hieronder zie je met behulp van de Set-Item cmdlet dat je zowel een omgevingsvariabele kunt maken of aanpassen.

PS51> Set-Item -Path Env:testvariable -Value "Alpha"

Het kopiëren van een omgevingsvariabele met Env:

Soms doet de situatie zich voor dat je de waarde van een omgevingsvariabele moet repliceren. Dit kan met behulp van de Copy-Item cmdlet.

Hieronder zie je dat de waarde van de COMPUTERNAME variabele wordt gekopieerd naar MYCOMPUTER, waarbij de bestaande waarde wordt overschreven.

PS51> Get-Item -Path Env:\MYCOMPUTER

Name                           Value
----                           -----
MYCOMPUTER                     MY-WIN10-PC

PS51> Copy-Item -Path Env:\COMPUTERNAME -Destination Env:\MYCOMPUTER
PS51> Get-Item -Path Env:\MYCOMPUTER

Name                           Value
----                           -----
MYCOMPUTER                     WIN10-1903

Het verwijderen van een omgevingsvariabele met Env:

Er zullen situaties ontstaan waarin een omgevingsvariabele niet langer nodig is. Je kunt omgevingsvariabelen verwijderen met een van de volgende methoden:

  • Gebruik de Set-Item cmdlet om een omgevingsvariabele in te stellen op een lege waarde
PS51> Set-Item -Path Env:\MYCOMPUTER -Value ''
PS51> Remove-Item -Path Env:\MYCOMPUTER
  • Gebruik de Clear-Item cmdlet.
PS51> Clear-Item -Path Env:\MYCOMPUTER

Het hernoemen van een omgevingsvariabele met Env:

In situaties waarin de naam van een omgevingsvariabele moet worden gewijzigd, heb je de mogelijkheid om deze te hernoemen, in plaats van te verwijderen en opnieuw aan te maken met de Env: provider.

Gebruik de Rename-Item cmdlet om de naam van een omgevingsvariabele te wijzigen terwijl de waarde behouden blijft. Hieronder zie je dat de variabele MYCOMPUTER wordt hernoemd naar OLDCOMPUTER met behoud van zijn waarde.

PS51> Rename-Item -Path Env:\MYCOMPUTER -NewName OLDCOMPUTER
PS51> Get-Item -Path OLDCOMPUTER
Name                           Value
----                           -----
OLDCOMPUTER                    WIN10-1903

$Env: Variabelen

Na het beheersen van de Env: drive om omgevingsvariabelen als bestanden te behandelen, laat dit gedeelte je zien hoe je ze als variabelen kunt behandelen. Een andere manier om omgevingsvariabelen te beheren tijdens de sessie is door gebruik te maken van de PowerShell Expression Parser. Deze functie stelt je in staat om de $Env: scope te gebruiken om toegang te krijgen tot omgevingsvariabelen.

Het verkrijgen van een omgevingsvariabele met $Env:

Met behulp van de $Env scope kun je rechtstreeks verwijzen naar omgevingsvariabelen zonder een commando zoals Get-Item te gebruiken, zoals hieronder wordt getoond.

PS51> $env:computername

Deze methode maakt het gemakkelijk om omgevingsvariabelen in te voegen in strings zoals hieronder:

PS51> "The Computer Name is {0}" -f $env:computername
The Computer Name is WIN10-1809
PS51> "The Computer Name is $env:computername"
The Computer Name is WIN10-1809

Het instellen of maken van een omgevingsvariabele met $Env:

Het instellen van een omgevingsvariabele met deze methode is eenvoudig. Hiermee wordt ook een nieuwe omgevingsvariabele aangemaakt als deze nog niet bestaat, zoals hieronder wordt weergegeven.

PS51> $env:testvariable = "Alpha"

Gebruik de += syntax om toe te voegen aan een bestaande waarde, in plaats van deze te overschrijven.

PS51> $env:testvariable = "Alpha"
PS51> $env:testvariable += ",Beta"

PS51> $env:testvariable
Alpha,Beta

Het verwijderen van een omgevingsvariabele met $Env:

Om een omgevingsvariabele te verwijderen met deze methode, stel je eenvoudig zijn waarde in op een lege string.

PS51> $env:testvariable = ''

Gebruik van de [System.Environment] .NET Klasse

De .NET klasse [System.Environment] biedt ook methoden voor het ophalen en instellen van omgevingsvariabelen. Dit is de enige methode om direct toegang te krijgen tot verschillende omgevingsbereiken en omgevingsvariabelen in te stellen die behouden blijven tussen PowerShell-sessies.

In alle volgende voorbeelden wordt, als er geen bereik wordt opgegeven, het procesbereik aangenomen.

Wanneer je de [System.Environment] gebruikt, zul je verschillende .NET statische klassen methoden gebruiken. Je hoeft niet te begrijpen wat een statische methode is. Je hoeft alleen te weten dat je, om een van de technieken die je zo gaat leren te gebruiken, eerst naar de klasse moet verwijzen ([System.Environment]), gevolgd door twee dubbele punten (::) en vervolgens de methode.

Weergeven van omgevingsvariabelen met [System.Environment]

Als je alle omgevingsvariabelen in een specifiek bereik wilt zien, gebruik je de GetEnvironmentVariables-methode. Deze methode geeft alle omgevingsvariabelen terug volgens het opgegeven bereik als het argument van de methode (tussen haakjes).

Listing environment variables with GetEnvironmentVariable in each scope
PS51> [System.Environment]::GetEnvironmentVariables('User') PS51> [System.Environment]::GetEnvironmentVariables('Machine') PS51> [System.Environment]::GetEnvironmentVariables('Process') # Hetzelfde als het proces PS51> [System.Environment]::GetEnvironmentVariables()

Ophalen van een specifieke omgevingsvariabele met [System.Environment]

Als je een specifieke omgevingsvariabele moet vinden, kun je dat op twee verschillende manieren doen.

  • GetEnvironmentVariables().<variabele naam> – niet aanbevolen
  • GetEnvironmentVariable('<variabele naam>','<scope>')

GetEnvironmentVariables()

Met de methode GetEnvironmentVariables() gebruik je de puntnotatie om de waarde te refereren. Plaats de klasse en de statische methode referentie van [System.Environment] tussen haakjes gevolgd door een punt en vervolgens de naam van de omgevingsvariabele zoals hieronder:

PS51> ([System.Environment]::GetEnvironmentVariables()).APPDATA

Merk op dat bij het refereren naar omgevingsvariabelen op deze manier, je ervoor moet zorgen dat de hoofdlettergevoeligheid overeenkomt! In het bovenstaande voorbeeld probeer je bijvoorbeeld de variabele APPDATA te refereren met appdata. Gebruik in plaats daarvan de GetEnvironmentVariable().

GetEnvironmentVariable()

In plaats van de methode GetEnvironmentVariables() te gebruiken, gebruik je in plaats daarvan GetEnvironmentVariable() om enkele omgevingsvariabelen te vinden. Dit omzeilt het probleem met hoofdlettergevoeligheid en stelt je ook in staat om het bereik te specificeren.

Om deze methode te gebruiken, geef je de naam van de omgevingsvariabele en het bereik op waarin je die variabele wilt zoeken, gescheiden door een komma.

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','User')
# Leeg

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','Machine')
# Leeg

PS51> [System.Environment]::GetEnvironmentVariable('ComputerName','Process')  WIN10-1903

# Hetzelfde als Process
PS51> [System.Environment]::GetEnvironmentVariable('ComputerName')
WIN10-1903

Het instellen van een Omgevingsvariabele met [System.Environment]

Gebruik de methode SetEnvironmentVariable() om de waarde van een omgevingsvariabele in te stellen voor het opgegeven bereik, of maak een nieuwe als deze nog niet bestaat.

Bij het instellen van variabelen in de procesomvang, zul je merken dat de procesomvang vluchtig is, terwijl wijzigingen in de gebruikers- en machinescopes permanent zijn.

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','User')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','Process')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha','Machine')

 # Hetzelfde als Proces
PS51> [System.Environment]::SetEnvironmentVariable('TestVariable','Alpha')

Let op: Als de SetEnvironmentVariable-methode wordt aangeroepen met een variabelenaam of -waarde van 32767 tekens of meer, wordt er een uitzondering gegenereerd.

Het verwijderen van een omgevingsvariabele met [System.Environment]

Gebruik de methode SetEnvironmentVariable() om een omgevingsvariabele voor de opgegeven scope te verwijderen door de waarde in te stellen op een lege string.

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'User')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'Process')

PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '', 'Machine')

# Hetzelfde als proces
PS51> [System.Environment]::SetEnvironmentVariable('TestVariable', '')

Nuttige PowerShell-omgevingsvariabelen

Net als veel andere Windows-toepassingen heeft PowerShell enkele eigen omgevingsvariabelen. Twee nuttige omgevingsvariabelen om te kennen zijn PSExecutionPolicyPreference en PSModulePath.

PSExecutionPolicyPreference

De omgevingsvariabele PSExecutionPolicyPreference slaat het huidige PowerShell-uitvoeringsbeleid op. Het wordt aangemaakt als er een sessiespecifiek PowerShell-uitvoeringsbeleid is ingesteld door:

  • De cmdlet Set-ExecutionPolicy uit te voeren met een Scope-parameter van Proces
  • De uitvoerbare powershell.exe te starten om een nieuwe sessie te starten, met de ExecutionPolicy-opdrachtregelparameter om een beleid voor de sessie in te stellen.

PSModulePath

De omgevingsvariabele PSModulePath bevat het pad dat PowerShell doorzoekt naar modules als je geen volledig pad opgeeft. Het wordt gevormd op een vergelijkbare manier als de standaard omgevingsvariabele PATH, met afzonderlijke map-paden gescheiden door een puntkomma.

PS51> $env:PSModulePath
C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

Snelkoppeling: Split elk map om een string-array te krijgen om elk pad afzonderlijk te verwerken met behulp van $env:PSModulePath.split(‘;’)

Samenvatting

Omgevingsvariabelen zijn een handige methode om informatie te verkrijgen over een lopend systeem, of om informatie op te slaan tussen sessies en herstarts. Of je nu alleen de standaardomgevingsvariabelen van het Windows-besturingssysteem leest en je eigen variabelen maakt, je kunt ze nu beheren met behulp van verschillende methoden met PowerShell!

Verder lezen

Source:
https://adamtheautomator.com/powershell-environment-variables/