1

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 コンソールまたはラップされたバッチ ファイルを介して上記のスクリプトを実行すると、メールが受信されません。

これに関するヘルプは大歓迎です。前もって感謝します!

よろしく -ラージ

4

1 に答える 1

0

Exchange の受信コネクタの設定が原因で、この問題に何度か遭遇しました。通常、サーバーの IP を追加して、メールの送信にサーバーを使用し始める場合は中継できるようにします。それ以外の場合は、接続を拒否します。

Exchange を使用している場合は、[サーバーの構成] -> [ハブ トランスポート] に移動し、[ネットワーク] タブの [これらの IP アドレスを持つリモート サーバーからメールを受信する] の下に表示されている内容を確認します。他のメール サーバーを使用している場合は、そのサーバーの接続許可に関するドキュメントを参照してください。また、デスクトップで使用しているユーザー アカウントとは異なるユーザー アカウントをサーバーで使用している場合は、別のユーザーとして実行を試して、サーバーで使用しているアカウントのアクセス許可があるかどうかを確認してください。

于 2013-10-25T23:10:21.650 に答える