环境变量是操作系统的重要组成部分。它们存储各种信息,例如系统文件和文件夹的路径,系统运行的处理器数量,当前用户详细信息等等。流程和程序利用这些环境变量来检索数据以执行它们。
PowerShell中的环境变量存储为PS驱动器(Env:)。要检索存储在操作系统中的所有环境变量,可以使用以下命令。
Get-ChildItem -Path Env:
Name Value ---- ----- ALLUSERSPROFILE C:\ProgramData APPDATA C:\Users\delta\AppData\Roaming CommonProgramFiles C:\Program Files\Common Files CommonProgramFiles(x86) C:\Program Files (x86)\Common Files CommonProgramW6432 C:\Program Files\Common Files COMPUTERNAME TEST1-WIN2K12 ComSpec C:\Windows\system32\cmd.exe FP_NO_HOST_CHECK NO HOMEDRIVE C: HOMEPATH \Users\delta LOCALAPPDATA C:\Users\delta\AppData\Local LOGONSERVER \\ADDC NUMBER_OF_PROCESSORS 1 OS Windows_NT Path C:\Windows\system32;C:\Windows;C:\Windows\System32 \Wbem PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;. MSC;. PROCESSOR_ARCHITECTURE AMD64 PROCESSOR_IDENTIFIER Intel64 Family 6 Model 126 Stepping 5, GenuineInte
您也可以使用dir env:命令检索所有环境变量和值。
要检索特定的环境变量,请在env之后提供变量名称:
PS C:\Windows\system32> Get-ChildItem -Path Env:\SystemDrive Name Value ---- ----- SystemDrive C:
如果为环境变量显示多个值,则可以使用“拆分”操作分离值。例如,
$env:PSModulePath -split ';'
C:\Users\delta\Documents\WindowsPowerShell\Modules C:\Program Files\WindowsPowerShell\Modules C:\Windows\system32\WindowsPowerShell\v1.0\Modules
您也可以使用[System.Environment]类的.NET方法检索特定或所有环境变量。要检索所有环境变量,请使用GetEnvironmentVariables()
class。
例如,
PS C:\Windows\system32> [System.Environment]::GetEnvironmentVariables() Name Value ---- ----- COMPUTERNAME TEST1-WIN2K12 USERPROFILE C:\Users\delta HOMEPATH \Users\delta LOCALAPPDATA C:\Users\delta\AppData\Local PSModulePath C:\Users\delta\Documents\WindowsPowerShell\Modules PROCESSOR_ARCHITECTURE AMD64 Path C:\Windows\system32;C:\Windows;C:\Windows\System32 \Wbem CommonProgramFiles(x86) C:\Program Files (x86)\Common Files ProgramFiles(x86) C:\Program Files (x86) PROCESSOR_LEVEL 6 LOGONSERVER \\ADDC PATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;. MSC;.CPL
要使用.Net方法获取特定的环境变量,请使用GetEnvironmentVariable()
method。
PS C:\Windows\system32> [System.Environment]::GetEnvironmentVariable('appdata') C:\Users\delta\AppData\Roaming
有关所有环境系统类支持的属性和方法,请参见下面的链接。
https://docs.microsoft.com/zh-cn/dotnet/api/system.environment?view=netcore-3.1
如果您检查上面的链接,则GetEnvironmentVariable方法支持多个参数。
GetEnvironmentVariable(String, EnvironmentVariableTarget)
在下面的示例中,我们可以将环境变量作为字符串传递,将Machine作为EnvironmentVariableTarget传递。
[System.Environment]::GetEnvironmentVariable('PSModulePath', 'Machine')
C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\ v1.0\Modules