繁体   English   中英

如何设置全局变量和

[英]How to set global variable and

我每半小时运行一次此脚本。 如果值大于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" $var1 -eq "NOTSENT" -and $main -gt 99设置任何值。 我在这里需要帮助。

$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"
}

“全局”仅表示它对创建它的PS会话是全局的。当会话结束时,变量消失了。 如果需要将该值从一个会话持久化到另一个会话,则需要将其写出到磁盘,然后在下次脚本运行时将其读回。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM