0
私はオフラインワークステーションのリストをpingするスクリプトを持っています。次に、ワークステーションIDと説明の両方を取り、それを電子メールの本文に入れて特定のアドレスに送信します。PowerShellのSystem.Object []を固定します。
私は変数を出力する限り、スクリプトはPowerShellの中でうまく動作します。 Send-MailMessage
コマンドレットを使用すると、電子メールの本文に表示されるのはSystem.Object[]
だけです。
これを修正するにはどうすればよいですか?私は-join
属性について読んだことがありますが、私はこれを私のスクリプトにどこに追加するのかはよく分かりません。
$list = Get-Content "C:\Users\$env:UserName\Desktop\workstations.txt"
foreach ($workstation in $list) {
$test = Test-Connection -BufferSize 32 -Count 1 -ComputerName $workstation -Quiet
$WQLquery = @"
select SMS_G_System_OPERATING_SYSTEM.Description from
SMS_R_System inner join SMS_G_System_SYSTEM on
SMS_G_System_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join
SMS_G_System_OPERATING_SYSTEM on
SMS_G_System_OPERATING_SYSTEM.ResourceId = SMS_R_System.ResourceId where SMS_G_System_SYSTEM.Name = '$workstation'
"@
$description = Get-WmiObject -Query $WQLquery -ComputerName 'WORKSTATIONHERE' -Namespace 'root\sms\SITEHERE' |
Select-Object Description
if ($test -match "false") {
$offlinelist += ,@("$workstation", $description)
}
}
$offlinelist
Send-MailMessage -To "TOTHEUSER" -From "FROM" -Subject "Offline Workstations" -SmtpServer "SMTPHERE" -Body "<p>These workstations are offline: </p> $offlinelist" -BodyAsHtml
これは私のコードよりも多くの方を募集しています。私は実行すると、このことは、エラーが返されます。 '送る-はMailMessage:「をSystem.Objectの[]は」パラメータ「ボディ」で必要とされる「可能System.String」タイプに変換できません指定された 方法は、しかし をsupported.'されていないが、。 'write-host'コマンドレットを使ってISEに' $ body'変数を表示しただけでは、HTMLと変位を生成していることがわかりますカスタムオブジェクトを正しく理解する。 'System.Object []'を文字列に変換するにはどうすればよいですか? – Ozar
ああ、そうです。 'ConvertTo-Html'はまだ配列を生成します。 'Out-String'も必要です。更新された回答をご覧ください。 –
あなたは私に大きな頭痛を救ってくれました。私は結果を '.csv 'にエクスポートして添付ファイルとして送信することに対処しなければならないと考え始めました。私はPSにかなり新しいですし、カスタムオブジェクトは私にとって外国のコンセプトでした。もっと頻繁に使う必要があるようです。 – Ozar