2017-11-02 8 views
0

サーバリスト内の一連のサーバをループして、それぞれのものを出力するスクリプトを継承しました。それはStringBuilderを使用して変数に物を追加し、結果を吐き出します。どのようにして、foreach全体の結果を印刷する代わりにVERYの最後に表示できるように、コンテンツを格納するスクリプトを取得しますか?その後、各繰り返しで上書きしますか?各実行中ではなくforeachの最後ですべての結果を出力します

現在、私の結果は次のようになります。

ServerName1 
    Text1 

次の実行:私はそれを電子メールで送信することができますので、私はそれがデータを格納するために取得し、最後に出力以下にするにはどうすればよい

ServerName2 
Text 2 

ServerName1 
Text1 

ServerName2 
Text2 

マイコード:

foreach($Machine in $Machines) 
    { 
      Invoke-Command -ComputerName $Machine -ScriptBlock{param($XML1,$XML2,$XML3,$URL) 
      [System.Text.StringBuilder]$SB = New-Object System.Text.StringBuilder 
      $X = $SB.AppendLine($env:COMPUTERNAME) 
      if (Test-Path <path>) 
      {   
       $PolResponse = <somestuff> 
       $PolResponse2 = <somestuff> 
       Write-Host "[1st] $PolResponse" -ForegroundColor Magenta 
       Write-Host "[2nd] $PolResponse2" -ForegroundColor Magenta 
       $X = $SB.AppendLine($PolResponse) 
       $X = $SB.AppendLine($PolResponse2) 
      } 
      else 
      { 
       $PolResponse = "[1st] No Response" 
       $PolResponse2 = "[2nd] No Response" 
       Write-Host $PolResponse -ForegroundColor Red 
       Write-Host $PolResponse2 -ForegroundColor Red 
       $X = $SB.AppendLine($PolResponse) 
       $X = $SB.AppendLine($PolResponse2) 
      } 
     } -ArgumentList $XML1, $XML2, $XML3, $URL 
    } 

    # Sending result email 

    <<I want to send the TOTALITY of $SB here>> 

答えて

0

あなたが(それより前)forループの外にStringBuilderの変数宣言を移動することで起動することができます [System.Text.StringBuilder] $ SB =新オブジェクトSystem.Text.StringBuilder

は、LOOP

+0

ありがとう@codemaker。電子メールで問題を通知するための基本的なスクリプトを完成させなければならなかったので、これを修正するためにこれを再訪するとき、私は間違いなくこれを試してみます。 – Ilya

0

のために私はこれがあなたが求めてたりしていない何のために良い解決策になるかどうかを知る、しかし何COUはありませんld doはtxtファイルを作成し、foreachループ内のすべてのループは情報をtxtファイルに追加します。これはすべての情報を保存し、最後にすべてをまとめて保存する方法の1つです。

New-Item -Path "\\Path\to\file.txt" -Itemtype File 

Foreach(){ 
    $Stuff = # Do your stuff here 
    Add-Content -Value $stuff -Path "\\Path\to\file.txt" 
} 

# Email .txt file ? 
# You could use Send-MailMessage to do this possibly 

これはあなたの目標に役立ちます。

+0

@Cory Etmundに感謝、私はバックバーナーでこれを保つつもりです。電子メールで問題を通知するための基本的なスクリプトを完成させなければならなかったので、これを修正するためにこれを再訪するときには、これを必ず実行します。 – Ilya

関連する問題