我正在尝试在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 =
为什么我只能使用以下方法获取环境变量:Get-ChildItem Env:*
VMWARE_ALARM_TARGET_NAME *
,而不仅仅是$ Test = $ env:VMWARE_ALARM_TARGET_NAME
答案 0 :(得分:0)
要尝试的一些事项:
#Use ${ } for complex variable names
${env:VMWARE_ALARM_TARGET_NAME}
#Or as part of a print statement use env directly (with or without ${env:}):
Write-Host "Test = $($env:VMWARE_ALARM_TARGET_NAME)"
#At an interactive prompt see if it can be tab completed
$env:VMWWARE #then tab to see if it shows up in auto complete
另外值得一看,当你运行set时cmd.exe会显示什么。在Powershell中输入:
cmd
set
exit
并查看输出结果。
答案 1 :(得分:0)
由于时间压力,我现在不得不接受这个:
$AlarmTARGET_NAME = get-childitem Env:*VMWARE_ALARM_TARGET_NAME*
$AlarmNAME = get-childitem Env:*VMWARE_ALARM_NAME*
$AlarmEVENTDESCRIPTION = get-childitem Env:*VMWARE_ALARM_EVENTDESCRIPTION*
$AlarmDECLARINGSUMMARY = get-childitem Env:*VMWARE_ALARM_DECLARINGSUMMARY*
$AlarmVALUE = get-childitem Env:*VMWARE_ALARM_ALARMVALUE*
代码不是很干净,但是有效。 感谢所有的回复。
Gabrie