marcimarc85
Goto Top

Ergebnisse einer for-Schleife gesammelt ausgeben

Für unser Monitoring muss ich das Ergebnis einer For Schleife in Powershell am ende gesammelt ausgeben, da unser PRTG Monitoring das sonst nicht verarbeiten kann.

$server="IP1","IP2",....  

foreach ($computer in $server) {


   $remotePath= New-PSDrive –Name “X” –PSProvider FileSystem –Root “\\$computer\d$” -Credential $adminCredential
   
#Hier ist die Abfrage

#Ergebnis
if($comparisonResult -eq 'true'){  
$result = '0'  
} else {
$result = '1'  
}


# Ausgabe des Vergleichsergebnisses
write-host $ServerDescription '-' $result  



<#
write-host "<prtg>"  
Write-Host "<result>"  
Write-Host "<channel>$ServerDescription</channel>"  
Write-Host "<value>$result</value>"  
Write-Host "</result>"  
write-host "</prtg>"  

Remove-PSDrive –Name “X”

}

Mit diesem Code kommt PRTG am ende aber nicht da, da alle 27 abgefragten Server ihr Ergebnis einzeln, in der Schleife, an PRTG weitergeben.

Der Support schrieb mir nun, dass das gesammelt, in einem Befehl, hinter der Schleife, also am Ende des Scripts passieren muss

           <prtg>
           <result>
           <channel>IP1</channel>
           <value>0</value>
           </result>
           <result>
           <channel>IP2</channel>
           <value>0</value>
           </result>
           <result>
           .
           .
           .
           </result>
           <text>CustomText</text>
           </prtg>

Wie bekomme ich denn alle Ergebnisse der Schleife am Ende je in einen Channel inkl. Result?

Content-Key: 9328202265

Url: https://administrator.de/contentid/9328202265

Printed on: April 28, 2024 at 15:04 o'clock

Mitglied: 7907292512
Solution 7907292512 Oct 16, 2023 updated at 10:35:07 (UTC)
Goto Top
$server="IP1","IP2"  
$channels = foreach ($computer in $server) {
    $remotePath= New-PSDrive –Name "X" –PSProvider FileSystem –Root "\\$computer\d$" -Credential $adminCredential  
   
    # Hier ist die Abfrage

    "<result>"  
    "<channel>$computer</channel>"  
    "<value>$(@{$true=0;$false=1}[$comparisonResult])</value>"  
    "</result>"  
    Remove-PSDrive –Name “X"  
}
"<prtg>"  
$channels
"</prtg>"  
sid.
Member: MarciMarc85
MarciMarc85 Oct 16, 2023 at 10:41:26 (UTC)
Goto Top
Zitat von @7907292512:

$server="IP1","IP2"  
$channels = foreach ($computer in $server) {
    $remotePath= New-PSDrive –Name “X” –PSProvider FileSystem –Root “\\$computer\d$” -Credential $adminCredential
   
    # Hier ist die Abfrage

    "<result>"  
    "<channel>$computer</channel>"  
    "<value>$(@{$true=0;$false=1}[$comparisonResult])</value>"  
    "</result>"  
    Remove-PSDrive –Name “X"  
}
"<prtg>"  
$channels
"</prtg>"  
sid.

vielen Dank