0

我正在尝试将 Send-MailMessage 设置为变量。一旦我在 Powershell 中输入,它会自动发送一封电子邮件。我的语法:

$EmailTo = "To"
$EmailFrom = "From"
$EmailSmtp = "smtp"
$EmailComputer = "$Env:Computername"
$EmailSubject = "Warning! $Emailcomputer had errors!"
$EmailCopyWarning = Send-MailMessage -to $Emailto -from $Emailfrom -subject $Emailsubject -smtpserver $Emailsmtp -body $CopyFalse
$EmailSvcWarning = Send-MailMessage -to $Emailto -from $Emailfrom -subject $Emailsubject -smtpserver $Emailsmtp -body $CCMExecNoSvc

上面设置的所有变量都在我的代码中正确显示,但是当我尝试为 $emailcopywarning 和 $emailsvcwarning 设置变量时,它们会立即向我发送一封电子邮件。我的意图是仅在出现错误时发送电子邮件。非常感谢!

4

2 回答 2

0

如果要将特定的 PowerShell 代码“保存”为变量以供以后执行,则需要创建一个scriptblock.

$EmailCopyWarning = [scriptblock]::Create("Send-MailMessage -to $Emailto -from $Emailfrom -subject $Emailsubject -smtpserver $Emailsmtp -body $CopyFalse");

然后执行它:

$EmailCopyWarning.Invoke();

但这并不是你真正应该做的。编写您的错误检测代码,如果检测到错误,只需发送电子邮件。如果您的意图是模块化脚本,或者调用您定义的函数来发送它。

于 2013-09-06T16:45:50.863 回答
0

函数 SendCopyWarning {Send-MailMessage -to $Emailto -from $Emailfrom -subject $Emailsubject -smtpserver $Emailsmtp -body $CopyFalse}

if (test-path yada){do this} else {do this; 发送复制警告}

于 2013-10-11T16:07:09.483 回答