Powershell スクリプトで異常な問題に直面しています。1 つの STORED プロシージャを実行する DB クエリを実行するスクリプトを作成しました。以下は完全なスクリプトです。
$server="DBServer,Inst"
$Database = "DATABASE"
$ConnectionTimeout = 30
$QueryTimeout = 120
$Query="STORED_PROCEDURE"
Import-Module “sqlps” -DisableNameChecking
$ds=Invoke-Sqlcmd -Query $Query -Database $Database -ServerInstance $server -ConnectionTimeout $ConnectionTimeout -QueryTimeout $QueryTimeout
$date=(Get-Date).ToString()
$ret=$ds.Return
--クエリは 0 または 1 を返します。0 は SP 合格、それ以外の場合は不合格を意味します。
$From="abc@xyz.com"
$SendCC= "aabbcc.b@xyz.com"
If ($ret -eq '0')
{
$Body=" STORED_PROCEDURE: <FONT COLOR=#00FF00> <b>PASS </b> </FONT> in <b> $server</b>:<i>$Database</i>; TimeStamp: $date"
$msg="Test: STORED_PROCEDURE - SUCCESS "
Write-Host "Sending Mail Notification - Ret 0"|
Send-MailMessage -From $From -To $SendCC -Subject $msg ($Body |Out-String) -BodyAsHtml -SmtpServer mail.xyz.com
Write-Host "Notification Sent!!"
}
このスクリプトは、xyz ドメインにある私のコンピューターからは問題なく動作します。このスクリプトを実行するバッチ ファイルを次のように作成しました。
@pushd "D:\Temp\SM_SP"
powershell -ExecutionPolicy Bypass -File .\SP_SM.ps1 -noconsole
@popd
このバッチ ファイルでさえ、私のコンピューターでは正常に動作し、メールを送信します..期待どおりに動作します! しかし、実際の問題は、テスト サーバーの 1 つ (Win Ser 2008 R2) で同じように実行されていることです。バッチ ファイルを手動で実行してもエラーは返されませんが、メール通知が届きません。
注- • スクリプトで適切な smtp サーバーの詳細について言及しました。同じスクリプトとバッチが、このサーバーと同じドメインにある私のコンピューターで正常に動作していると述べたからです。• Powershell の組み込みコマンド「Send-MailMessage」をサーバーで次のようにテストしました。
Send-MailMessage -From $from -To $to -Subject Test -SmtpServer mail.xyz.com
$from と $to の両方が私のアドレスであり、メールをまったく問題なく受信しています。しかし、サーバーで Powershell コンソールまたはラップされたバッチ ファイルを介して上記のスクリプトを実行すると、メールが受信されません。
これに関するヘルプは大歓迎です。前もって感謝します!
よろしく -ラージ