none
Objekt-Ausgabe durchsuchen RRS feed

  • Frage

  • moin,

    ich muss öfters im Exchange in Powershell Ausgaben nach Inhalten suchen, da ich das Property nicht kenne bzw. da es kann sein, dass es das gesuchte gar nicht in diesem Bereich gibt.

    unter DOS würde ich das Ergebnis noch find pipen

    ver | find "10.0."

    derzeit leite ich die Ausgabe in Powershell in eine Datei öffne diese und suche darin. Ich denke aber das müsste auch einfacher gehen?

    in Powershell habe ich folgendes ohne Erfolg probiert.

    Beispiele

    Get-MapiVirtualDirectory | findstr /C:"OAuth"

    get-mailbox demo2 | out-string -stream | select-string "xyz"

    get-mailbox demo2 | fl | select-string "xyz"


    Chris

    Sonntag, 10. Dezember 2017 12:36

Antworten

  • Die Variante mit "Out-String -Stream" sollte schon funktionieren:

    PS > Get-Service | Out-String -Stream | Select-String 'peer'
    
    Stopped  p2pimsvc           Peer Networking Identity Manager
    Stopped  p2psvc             Peer Networking Grouping
    Running  PeerDistSvc        BranchCache
    Stopped  PNRPsvc            Peer Name Resolution Protocol
    

    Sicher, dass du richtig getestet hast?

    • Als Antwort markiert -- Chris -- Sonntag, 10. Dezember 2017 16:59
    Sonntag, 10. Dezember 2017 15:30
  • Nachtrag: [solved]

    ich habe das Problem gefunden warum es bei den Tests nie funktioniert hat. Bei vielen Exchange CMD-Lets wird per Default nur ein kleiner Teil an Properties zurückgeliefert. Man muss daher noch (unbedingt vor dem out-string) ein fl einfügen

    get-mailbox "90010" | fl | out-string -Stream | select-string "meister"


    Chris

    • Als Antwort markiert -- Chris -- Montag, 11. Dezember 2017 06:31
    Montag, 11. Dezember 2017 06:31

Alle Antworten

  • Für das komplexe Suchen (und ersetzen) gibt es die "Regular Expressions".
    Diese erlauben einfache Suchmuster "*.[0-9].{2, 10}*." aber auch komplexe "[0-9a-zA-Z](ABC|DEF|YZK)[A-F0-9]"

    https://www.windowspro.de/script/regulaere-ausdruecke-regex-powershell-verwenden

    Sonntag, 10. Dezember 2017 14:28
  • Hallo

    die Frage war vielleicht nicht ganz eindeutig. Ich scheitere nicht am komplexen Ausdruck, sondern dass ich mit get-xyz meist ein Objekt erhalte und zb. mit Select-String vermutlich nur einen String durchsuchen kann.

    get-mailbox demo2 | out-string -stream | select-string "xyz"

    Die Suche würde ja mit select-String sehr gut funktionieren (siehe Screenshot), daher kein RegEx Problem.

    ich wollte mir nur den Umweg über ein Ausgabefile sparen.

    Beispiel


    Chris

    Sonntag, 10. Dezember 2017 14:43
  • select-string geht auch mit regex:

    ... | select-string -Pattern $regex -AllMatches | ...

    https://techtalk.gfi.com/windows-powershell-extracting-strings-using-regular-expressions/

    Sonntag, 10. Dezember 2017 14:58
  • ich weiß, aber probier bitte einmal das, dann ist es leichter verständlich was ich meinte. Also ähnlich wie ein Grep nur im Output sucht

     
    get-service
    get-service | select-string -Pattern "Live" 


    Chris

    Sonntag, 10. Dezember 2017 15:04
  • Die Variante mit "Out-String -Stream" sollte schon funktionieren:

    PS > Get-Service | Out-String -Stream | Select-String 'peer'
    
    Stopped  p2pimsvc           Peer Networking Identity Manager
    Stopped  p2psvc             Peer Networking Grouping
    Running  PeerDistSvc        BranchCache
    Stopped  PNRPsvc            Peer Name Resolution Protocol
    

    Sicher, dass du richtig getestet hast?

    • Als Antwort markiert -- Chris -- Sonntag, 10. Dezember 2017 16:59
    Sonntag, 10. Dezember 2017 15:30
  • perfekt, genau das was ich suche und was ich erwartet habe. out-streng -stream ist unbedingt erforderlich. und geht auch mit " als Hochkomma

    habe es jetzt nochmals auf einer anderen Maschine getestet und es funktioniert auf anhieb. Werde morgen nochmals nachsehen was das anders ist.

    sollte dann auch unter Exchange CMD-Lets funktionieren

    Danke


    Chris


    • Bearbeitet -- Chris -- Sonntag, 10. Dezember 2017 17:03
    Sonntag, 10. Dezember 2017 17:03
  • Nachtrag: [solved]

    ich habe das Problem gefunden warum es bei den Tests nie funktioniert hat. Bei vielen Exchange CMD-Lets wird per Default nur ein kleiner Teil an Properties zurückgeliefert. Man muss daher noch (unbedingt vor dem out-string) ein fl einfügen

    get-mailbox "90010" | fl | out-string -Stream | select-string "meister"


    Chris

    • Als Antwort markiert -- Chris -- Montag, 11. Dezember 2017 06:31
    Montag, 11. Dezember 2017 06:31