Powershell环境变量

时间:2015-01-14 21:48:51

标签: 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 =

为什么我只能使用以下方法获取环境变量:Get-ChildItem Env:* VMWARE_ALARM_TARGET_NAME *,而不仅仅是$ Test = $ env:VMWARE_ALARM_TARGET_NAME

2 个答案:

答案 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

相关问题