2017-12-29 14 views
-1

夜間に実行される以下のようなセクションが多いスクリプトがあります。私は警告を出してエラーをレビューできるように、すべてのエラーを電子メールで送信したいと思います。私はすべてのエラーをキャプチャする最初のステップで問題を抱えています...私は電子メールまたはバッファリングのいくつかの種類にキャプチャすることができます私は電子メールがさらに良いだろうと仮定ファイルにします。両方のステップの助けを借りれば、とりわけ捕捉部分が役に立ちます。powershellスクリプトと電子メールですべてのエラーをキャプチャします

#---- Set Exchange archive licnse for all users with an Office license ---- 
Get-MsolUser -ALL | where {($_.Licenses.accountskuID -contains 
"Tennant:STANDARDWOFFPACK") -and ($_.Licenses.accountskuID -notcontains 
"Tennant:EXCHANGEARCHIVE_ADDON")} | Set-MsolUserLicense -AddLicenses 
"Tennant:EXCHANGEARCHIVE_ADDON" 


#-------------------------- ENABLE LITIGATION HOLD ---------------------- 
Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq 
"UserMailbox"} | Set-Mailbox -LitigationHoldEnabled $true - 
LitigationHoldDuration 2555 
+0

キャプチャ部分のStart-Transcriptをチェックしましたか? –

答えて

0

エラーメッセージは自動的に$error変数に取り込まれます。最新のメッセージについては$error[0]を使用してください。

あなたはその後、 Send-MailMessageレット

例と併せてお使いの電子メールの本文としてこと使用することができます

:あなたのコードで

$body = ""; 
foreach ($e in $error) { 
    $body += "<hr /><pre>" + $e.ToString() + "</pre><hr />"; 
} 
Send-MailMessage -BodyAsHtml -Body $body -SmtpServer "smtp_server_address" -From "[email protected]" -To "[email protected]" -Subject "PowerShell Error Report" 
+0

Cool。ありがとうございました。 ロギング結果には、「ライセンス超過」のようなエラーの一部だけが表示されますが、「Set-MsolUserLicense」で使用されたコマンドのような詳細は表示されません。より多くの出力を得る方法があるので、私はscirptのどの部分が失敗する可能性があるかについてより良いアイデアを持っていますか? –

+0

デフォルトの$ error出力には、間違ったものがすべて表示されます。 $ errorのデフォルト出力には、エラーデータの一部だけも表示されます。すべての$エラーデータを取得するには、これを行います。 $エラー|フォーマット - リスト - 強制。イベントは、上記のようにスクリプトロギングを有効にする必要があります。エラーは、アプリケーションエラー、サービスエラー、Windows PowerShell(アプリケーションログとサービスログの下にあるノード)など、PoSHスクリプトとWindowsイベントログの$ Errorのいくつかの場所に記録されます。 – postanote

+0

$ error変数は単なるオブジェクトの集合です。私の例では '.ToString()'を使用したときのように単純なメッセージしか出力しません。特定のプロパティからより詳細な情報を取得することができます。または、@ poststateが指摘したように、それらをすべてリスト形式で出力するだけです –

0

、あなたも、それらをログに記録するために、エラーをトラップする必要があり

https://blogs.technet.microsoft.com/heyscriptingguy/2013/02/01/use-powershell-to-create-and-to-use-a-new-event-log

https://blogs.technet.microsoft.com/heyscriptingguy/2013/06/20/how-to-use-powershell-to-write-to-event-logs

01 ...独自のイベントログに書き込みます

...または独自のログ機能を作成してください。

例: https://gallery.technet.microsoft.com/scriptcenter/Write-Log-PowerShell-999c32d0

または、PowerShellのロギングを使用して開始します。

例: グループポリシーでロギングを有効に https://gallery.technet.microsoft.com/scriptcenter/Write-Log-PowerShell-999c32d0

使用PowerShellの転写産物

例: https://technet.microsoft.com/en-us/library/ff687007.aspx?f=255&MSPPError=-2147217396

次に、あなたのように、電子メールに引っ張ることができる中央の共有に保存されているものを持っています添付ファイル。

関連する問題