Jump to content

Powershell Abfrage nach ergebniss filtern


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hey,
ich würde gerne eine Powershell Abfrage nach einem bestimmten Ergebniss filtern und jenach Ergebniss soll er dann ein Echo ausgeben

 
#Snapin hinzufügen
 
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010;
 
#Testet die Exchange Suche 
$Status=Test-ExchangeSearch | Select ResultFound
if ($status -contains "False"){
echo "Def"
}
if($status -contains "True"){
echo "Abc"
}


Er soll den Suchindex des Exchangeserver auf Funktion testen, Interessant ist hier nur das " ResultFound" dies ist entweder True oder False
jenachdem ob die mailbox als result true oder false hat soll er dann eine ausgabe machen.

Es handelt sich um 4 Mailboxen
LG

mit where  und if habe ich schon einiges probiert nur leider komme ich nicht zum gewünschten Ergebniss.
Link zu diesem Kommentar

ja mit -EQ hatte ich es vorher versucht, jedoch greift das nicht richtig, er macht die Abfrage aber zeigt mir alle an, wenn ich zum Beispiel sage 

#Snapin hinzufügen
 
#Snapin hinzufügen
 
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010;
 
#Testet die Exchange Suche 
$Status=Test-ExchangeSearch | Select ResultFound -ExpandProperty ResultFound
$status
if ($status -eq "False"){
echo "Def"
}
else{
echo "Abc"
}

Ich brauch am ende eine Abfrage die , maximal angibt welche Database gemeint ist und ob der ResultFound Wert True oder false ist.

diese echos will ich dann in meinem Monitoring ausgeben lassen
Database 1 - true daher status ok 
und so weiter.

in dem Beispiel ist der Status bei allen True, jedoch gibt er mir am ende das Echo Def was ja für status false steht.
er hat probleme nach der info  ResultFound zu filtern habe ich das Gefühl.
Link zu diesem Kommentar
#Snapin hinzufügen
 
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010;
 
#Testet die Exchange Suche 
$Status=Test-ExchangeSearch | Select ResultFound -ExpandProperty ResultFound
$status
if ($status[0].ResultFound -eq "False"){
echo "Def"
}
else{
echo "Abc"
}

Ausgabe :
True
True
True
True
Def

klappt nicht wie gewünscht :/
woran könnte es noch liegen?
Link zu diesem Kommentar
 
Database     Server       Mailbox      ResultFound SearchTime Error                       
                                                   InSeconds                              
--------     ------       -------      ----------- ---------- -----                       
Dienstaccoun RTOS2010E    SystemMailbo True        3,058                                  
ts-Mailbox                x{086f6926-c                                                    
                          903-4cbc-8e5                                                    
                                                                                
Mailbox_DB_0 RTOS2010E    SystemMailbo True        3,089                                  
5                         x{9be39cb5-3                                                    
                          d7e-480b-b23                                                    
                                                                              
Mailbox_DB_0 RTOS2010E    SystemMailbo True        3,026                                  
6                         x{2df01cd3-8                                                    
                          4a6-4549-b80                                                    
                                                                                    
Mailbox_DB_0 RTOS2010E    SystemMailbo True        2,028                                  
7                         x{7b388b56-d                                                    
                          106-48a2-b8e                                                    
                                                                                 


er gibt insgesamt 4 stück aus.
wie kann ich das dann bewerkstelligen ?
 
Link zu diesem Kommentar

Wie kann ich das am besten machen ?

Mein Ansatz wäre:
 

$Mailboxes=Test-ExchangeSearch
#Snapin hinzufügen
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010;
#Testet die Exchange Suche 
foreach ($Mailbox in $Mailboxes) {
Where ResultFound -EQ "False"
echo "abc"
}

er müsste mir demnach kein mal abc ausgeben, er gibt es aber 4 mal aus als ob alle auf false stehen.

stehe leider ein wenig auf dem Schlauch ist ne weile her das ich was mit Powershell gemacht habe.
bearbeitet von Dsemaan
Link zu diesem Kommentar

So funktioniert es, wenn ich den Wert auf $False setze gibt er mir 4 mal nö aus.
wenn ich ihn auf $true setze 4 mal japp
also macht er das was ich will.

Ich müsste nun das Ergebnis in eine Ausgabe packen, er soll also sagen  
Database 1 - Datenbanksuche ist Intakt
usw.
Wie kann ich ihm sagen das er mir nicht nur das japp und nö ausgibt sondern auch den namen passend dazu.
dann könnte ich diese Werte mit einem Echo ausgeben und Mein Monitoring nimmt die auf.




 


$Mailboxes=Test-ExchangeSearch
$database=$Mailbox.Database
$status1= "Die Datenbanksuche ist intakt - 1"
$status2= "Die Datenbanksuche weist einen Fehler auf - 2"
$status=If ($Mailbox.ResultFound -eq $true) {
   "$status1"
} else {
   "$status2"
}  
#Snapin hinzufügen
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010;
#Testet die Exchange Suche 
foreach ($Mailbox in $Mailboxes){
echo "$status + $database"
}

Die Datenbank ist in Takt - 1 + Mailbox_DB_07
Die Datenbank ist in Takt - 1 + Mailbox_DB_07
Die Datenbank ist in Takt - 1 + Mailbox_DB_07
Die Datenbank ist in Takt - 1 + Mailbox_DB_07

er benennt jedes mal die gleiche? hmmm
Link zu diesem Kommentar

Moin,

 

naja, du weist $database ganz oben einen Wert zu, bevor deine Schleife losläuft. Dann ist das eben ein fester Wert. Insgesamt sieht dein Code jetzt ziemlich unordentlich aus ...

 

Pseudocode:

$Datenbanken = Test-Cmdlet
Foreach $DB in $Datenbanken
   If $DB.Status = $true
      "$DB.Name ist intakt"
   else
      "$DB.Name ist kaputt"

Mangels passender Umgebung kann ich das nicht testen. Aber die Logik dürfte naheliegend sein.

 

Gruß, Nils

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...