2016-10-21 14 views
0

電子メールで送信される変数の結果を受け入れ可能または可読な形式で取り込むことに問題があります。続きPowershell Email本文変数

は、私が使用するスクリプトで、

$body = Search-ADAccount -UsersOnly -AccountExpired -SearchBase 'OU=Test1,OU=TEST,OU=Accounts,DC=home,DC=ac,DC=uk' | select SamAccountName, DistinguishedName, AccountExpirationDate 

$emailto = '[email protected]' 
$emailfrom = '[email protected]' 
$emailserver = '127.0.0.1' 

Send-MailMessage -To $emailto -From $emailfrom -Subject 'Expired Accounts' -Body $body -SmtpServer $emailserver 

$本体可変出力Iは、電子メールの本文に表示したい正確に何です。

SamAccountName DistinguishedName AccountExpirationDate -------------- ----------------- --------- ------------ jumartin CN =ユーザー1、OU =テスト1、OU =テスト、OU =アカウント、DC =ホーム、DC = AC、DC = uk 19/10/2016 00:00 :00
ricohvalue CN =ユーザー2、OU = TEST1、OU = TEST、OU =アカウント、DC =自宅、DCをACに=、DC =英国2016年2月9日午前0時00分00秒

しかし、有効期限が切れたユーザーが複数存在し、期限切れのユーザーが1人いる場合は、次の形式で表示されます。 -

@ {SamAccountName = userone; DistinguishedName = CN =ユーザー1、OU =テスト1、OU =テスト、OU =アカウント、DC =ホーム、DC = AC、DC = AccountExpirationDate = 10/2016分の19 0時00分○○秒}

私が探していますすべての電子メールの本文にライン形式での素敵なラインにSAMアカウント、識別名およびAccountExpirationDateです。

私はメール内の画面に表示されているものをどのようにキャプチャするのか分かりません。誰かが私に間違っていることを教えてもらえますか?

答えて

0

私はSearch-ADAccountをテストしませんが。コマンドレットは、アレイ内の複数のユーザーを返したときにクエストからの同様のGet-QADUserを使用すると、私は次のエラーを与える:

Send-MailMessage : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Body'. 

だから最高のあなたが体内に入れていることは、文字列であることを確認してください。

Send-MailMessage -To $emailto -From $emailfrom -Subject 'Expired Accounts' -Body ($body | Out-String) -SmtpServer $emailserver 

表を適切なHTMLに変換し、BodyAsHtmlパラメータを使用します。

+0

Adamar:それはすばらしいです...そのように動作する必要があります。なぜ私は間違っていたのか分かっていたのですが、なぜ変数に取り込まれた文字列であるのか、Out-Stringに$ bodyを出力しなければならなかったのでしょうか?もう一度あなたの助けに感謝します。 – metho

+1

Search-ADAccountはADオブジェクトを返します。 '| 「選択」は、オブジェクトを、選択されたプロパティを有するカスタムオブジェクトに変換するだけであり、フラットな文字列には変換しない。 '| Out-String'はそうです。 '$ body.GetType()'と '($ body | Out-String).GetType()'を比較することができます。 – whatever

関連する問題