如何设置全局变量和

时间:2014-12-19 15:38:47

标签: variables powershell if-statement global-variables

我这个脚本每半小时运行一次。如果值大于99,它会发送一封电子邮件,但如果值仍为99,我不希望它每隔30分钟发送一封电子邮件。

我只想发一次电子邮件。如果该值小于99然后再次大于99,则仅发送一次电子邮件。

这是脚本

$main = 100


IF ($main -gt 99) {
 Write-Host $main
 ##Send Email
}
else 
{
 Write-Host "Not Greater than 99." 
}

我尝试了什么,它不起作用 我尝试使用全局变量,如果$var1 -eq "NOTSENT" -and $main -gt 99它将发送电子邮件并设置$var1 = "SENT",则设置相等。我在这里需要帮助。

$main = 100
$var1 

IF (($main -gt 99) -and ($var1 -eq "NOTSENT")) {
 Write-Host $main
 ##Send Email
 $var1 = "SENT"
}
else 
{
 Write-Host "Not Greater than 99." 
 $var1 = "NOTSENT"
}

2 个答案:

答案 0 :(得分:2)

"全球"只是意味着它在创建的PS会话中是全局的。当会话结束时,变量就消失了。如果需要将该值从一个会话持久保存到另一个会话,则需要将其写入磁盘,然后在下次运行脚本时将其读回。

答案 1 :(得分:2)

mjolinor关于它不工作的原因是正确的;我不会重述这一点。

但是,您可以设置用户级别或计算机级别的环境变量,而不是写入磁盘:

[Environment]::SetEnvironmentVariable('Variable', 'Value' , 'User')
[Environment]::SetEnvironmentVariable('Variable', 'Value' , 'Machine') # requires elevation

请参阅http://technet.microsoft.com/en-us/library/ff730964.aspx