我想在PowerShell中使用环境变量,但我发现的例子似乎并不奏效。这是我使用的测试脚本:Powershell环境变量
Get-ChildItem Env:
Write-Host "************"
$AlarmDatastore = Get-ChildItem Env:*VMWARE_ALARM_TARGET_NAME*
Write-Host "Var = " $AlarmDatastore.value
$Test = $env:VMWARE_ALARM_TARGET_NAME
Write-Host "Test = " $Test
脚本的输出:
USERNAME ADMIN.GABRI
USERPROFILE C:\Users\admin.gabri
VMWARE_ALARM_ALARMVALUE Current values for metric/state
VMWARE_ALARM_DECLARINGSUMMARY ([Yellow metric Is above 10; Red metric Is a...
VMWARE_ALARM_EVENTDESCRIPTION Alarm 'Alarm 10 percent test with script' on ...
VMWARE_ALARM_ID alarm-601
VMWARE_ALARM_NAME Alarm 10 percent test with script
VMWARE_ALARM_NEWSTATUS Red
VMWARE_ALARM_OLDSTATUS Gray
VMWARE_ALARM_TARGET_ID datastore-12587
VMWARE_ALARM_TARGET_NAME VCD-VMFS-095-FAST-VNX-5400-04
VMWARE_ALARM_TRIGGERINGSUMM... Metric Disk Space actually used = 96
windir C:\Windows
************
Var = VCD-VMFS-095-FAST-VNX-5400-04
Test =
为什么我只能使用获得环境VAR:获取ChildItem ENV:*
VMWARE_ALARM_TARGET_NAME *
,而不是简单地由$测试= $ ENV:VMWARE_ALARM_TARGET_NAME
你为什么在gci中使用通配符?为什么不使用'Get-Item Env:\ VMWARE_ALARM_TARGET_NAME'?我想知道在使用'$ env'的时候,gci调用中可能没有包含通配符吗? – briantist
我将代码更改为您的建议,这就是结果。 代码: '$ Test2的= GET-项目ENV:\ VMWARE_ALARM_TARGET_NAME 写主机 “的Test2 =” $ Test2' 结果: GET-项目:找不到路径 'ENV:\ VMWARE_ALARM_TARGET_NAME',因为它不存在。 在G:\ DataStoreAlarms \ Scripts \ EnvTest.ps1:5 char:10 + $ Test2 = Get-Item Env:\ VMWARE_ALARM_TARGET_NAME + ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:Env:\ VMWARE_ALARM_TARGET_NAME:String)[Get-Item],ItemNotFoundException + FullyQualifiedErrorId:PathNotFound,Microsoft.PowerShell.Commands。 GetItemCommand – Gabrie
如何:'gi env:* VMWARE_ALARM_TARGET_NAME * | fl *'? – briantist