none
Powershell Objekte vergleichen nur unterschiedliche Objekte , compare-object RRS feed

  • Frage

  • moin,

    ich habe da eine kniffelige Aufgabe

    wir nutzen In-Place-Holds auf eine bestimmte Exchange DB mit shared Office Postfächern.

    derzeit läuft jeden Tag ein Job der alle Office Postfächer in-hold setzt.

    Set-MailboxSearch "InPlace" -SourceMailboxes (Get-Mailbox -Database Office| Select-Object -ExpandProperty Name)

    Hat das Nachteile? Soll ich es so belassen und so umbauen, dass nur fehlende Postfächer ergänzt werden.

    Powershell compare-objekt Test

    ich habe Stichproben gemacht und bin der Meinung es sollte alle drinnen stehen.

     

    Set-MailboxSearch "InPlace" -SourceMailboxes (Get-Mailbox -Database office | Select-Object -ExpandProperty Name)
    
    $b = get-mailbox -database Office
    
    $c = Compare-Object -ReferenceObject $a -DifferenceObject $b -PassThru
    
    

    und bekomme ein lange Liste ALLER Objekte mit

    SideIndicator        : <=

    hier bin ich mir nicht sicher wie es weitergeht

    Set-MailboxSearch "InPlace" -SourceMailboxes (c$)


    Chris

    Dienstag, 17. Januar 2017 07:46

Antworten

Alle Antworten

  • Moin,

    und was enthält $a?


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    Dienstag, 17. Januar 2017 10:05
  • sorry Beispiel Tippfehler

    $a = get-mailboxsearch "inPlace" | select -ExpandProperty Sourcemailboxes
    
    $b = get-mailbox -database Office
    
    $c = Compare-Object -ReferenceObject $a -DifferenceObject $b -PassThru
    so, jetzt müsste das Beispiel wieder passen


    Chris




    • Bearbeitet -- Chris -- Dienstag, 17. Januar 2017 10:18 tippfehler
    Dienstag, 17. Januar 2017 10:13
  • Moin,

    kann's gerade nicht testen, aber vermutlich enthält $a Objekte anderen Typs als $b. Hast Du das mal mit z.B. Get-Member verifiziert?


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    • Als Antwort markiert -- Chris -- Dienstag, 17. Januar 2017 14:32
    Dienstag, 17. Januar 2017 10:49
  • bei enthalten "Name"

    ich glaube ich habe es

    man kann bei Compare-Object das vergleichende Feld angeben.

    $c = Compare-Object -ReferenceObject $a -DifferenceObject $b -PassThru -Property Name

    hier bekomme ich zuminderst nichts mehr zurück. Müsste somit stimmen.


    Chris

    Dienstag, 17. Januar 2017 11:08
  • zu früh gefreut

    1.txt

    feld1,feld2
    eins,aa
    zwei,cc
    vier,dd
    fünfi,ee

    2.txt

    feld1,feld2
    eins,aa
    zwei,bb
    drei,cc
    vier,dd

     
    $a = get-content c:\temp\1.txt
    $b = get-content c:\temp\2.txt
    $c = compare -ReferenceObject $a -DifferenceObject $b -Property feld2
     

    -property ist doch nicht das Feld das ich vermutet habe!

    PS-TEST> $c = compare -ReferenceObject $a -DifferenceObject $b -Property feld2

    PS-TEST> $c

    feld2 SideIndicator
    ----- -------------
          =>     


    Chris

    Dienstag, 17. Januar 2017 11:14
  • get-Content liefert keine zwei Ojektspalten, daher war der Test falsch.

    so ging es jetzt

    PS-TEST> $c

    feld2 SideIndicator
    ----- -------------
    bb    =>          
    ee    <=   

    $a = import-csv c:\temp\1.txt -Delimiter ','
    $b = import-csv c:\temp\2.txt -Delimiter ','
    $c = compare -ReferenceObject $a -DifferenceObject $b -Property feld2
    $c
    daher könnte -Property die Lösung sein.


    Chris


    • Bearbeitet -- Chris -- Dienstag, 17. Januar 2017 12:30
    Dienstag, 17. Januar 2017 12:30
  • hat funktioniert

    $a = get-mailboxsearch "inPlace" | select -ExpandProperty Sourcemailboxes
    $b = get-mailbox -database office
    $c = Compare-Object -ReferenceObject $a -DifferenceObject $b -property name
    Set-MailboxSearch "InPlace" -SourceMailboxes ($c.name)


    Chris

    • Als Antwort markiert -- Chris -- Dienstag, 17. Januar 2017 14:32
    Dienstag, 17. Januar 2017 14:32