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){これを行う} else {これを行う; SendCopyWarning}

于 2013-10-11T16:07:09.483 に答える