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-ID: 9328202265

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

Ausgedruckt am: 25.11.2024 um 05:11 Uhr

7907292512
Lösung 7907292512 16.10.2023 aktualisiert um 12:35:07 Uhr
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.
MarciMarc85
MarciMarc85 16.10.2023 um 12:41:26 Uhr
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