Foley60528 0 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 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 Falsejenachdem ob die mailbox als result true oder false hat soll er dann eine ausgabe machen.Es handelt sich um 4 MailboxenLGmit where und if habe ich schon einiges probiert nur leider komme ich nicht zum gewünschten Ergebniss. Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 Moin, wenn "True" oder "False" das Ergebnis ist, dürfte "-contains" als Operator nicht gehen. Dann würde ich es mit "-eq $true" versuchen. Gruß, Nils Zitieren Link zu diesem Kommentar
testperson 1.707 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 Hi, und noch ein "-ExpandProperty ResultFound" hinten dran ans Select ResultFound. Gruß Jan Zitieren Link zu diesem Kommentar
Foley60528 0 Geschrieben 10. Mai 2017 Autor Melden Teilen Geschrieben 10. Mai 2017 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 lassenDatabase 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. Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 (bearbeitet) Moin, ich vermute mal: $status.ResultFound Du solltest dir klar machen, dass du in der PowerShell mit Objekten arbeitest und nicht mit Text. Gruß, Nils bearbeitet 10. Mai 2017 von NilsK Zitieren Link zu diesem Kommentar
Foley60528 0 Geschrieben 10. Mai 2017 Autor Melden Teilen Geschrieben 10. Mai 2017 das habe ich bereits versucht, also test-exchangesearch.resultfound als auch $status.ResultFoundleider nicht das gewünschte Ergebniss Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 Bei Test.ExchangeSearch kommt ggf. ein Multistring zurück, daher wäre folgendes z.B. für das erste Element nötig: if ($Status[0].ResultFound -eq $true) {... Zitieren Link zu diesem Kommentar
Foley60528 0 Geschrieben 10. Mai 2017 Autor Melden Teilen Geschrieben 10. Mai 2017 #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 Defklappt nicht wie gewünscht :/woran könnte es noch liegen? Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 Moin, was gibt die Test-ExchangeSearch denn überhaupt zurück? Ein Objekt oder mehrere? Wenn es mehrere sind, musst du diese in einer Schleife abfragen. Gruß, Nils Zitieren Link zu diesem Kommentar
Foley60528 0 Geschrieben 10. Mai 2017 Autor Melden Teilen Geschrieben 10. Mai 2017 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 ? Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 Moin, gut, du bekommst also vier Objekte zurück und nicht eines. Der einfachste Weg wäre wohl, mit einer ForEach-Schleife jedes Objekt anzusprechen und nach dessen Namen und ResultFound-Wert zu fragen. Gruß, Nils Zitieren Link zu diesem Kommentar
Foley60528 0 Geschrieben 10. Mai 2017 Autor Melden Teilen Geschrieben 10. Mai 2017 (bearbeitet) 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 10. Mai 2017 von Dsemaan Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 Moin, das Where-Konstrukt ist mir nicht geläufig, vielleicht geht es, aber ich würde mit If arbeiten. Und niemals auf den String-Wert "true" testen, sondern auf $true. Nota bene: Objekte, nicht Text! If ($Mailbox.ResultFound -eq $true) { 'japp' } else { 'nö' } Gruß, Nils Zitieren Link zu diesem Kommentar
Foley60528 0 Geschrieben 10. Mai 2017 Autor Melden Teilen Geschrieben 10. Mai 2017 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 jappalso macht er das was ich will.Ich müsste nun das Ergebnis in eine Ausgabe packen, er soll also sagen Database 1 - Datenbanksuche ist Intaktusw.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_07er benennt jedes mal die gleiche? hmmm Zitieren Link zu diesem Kommentar
NilsK 2.957 Geschrieben 10. Mai 2017 Melden Teilen Geschrieben 10. Mai 2017 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.