Ankündigung

Einklappen
Keine Ankündigung bisher.

Powershell expert gesucht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Powershell expert gesucht

    Moin jungs,

    da ich mich bislang noch nicht mit powershell auseinander gesetzt habe, bin ich gerade etwas überfordert.

    Aktuell habe ich folgendes Script:

    Get-Mailbox -OrganizationalUnit "OU=Users,OU=RS1,OU=EU,OU=Local,DC=IT,DC=intern" | where {$_.ArchiveDatabase -eq $null}

    Soweit so gut. Klappt prima. Problem ist, dass wir hier 120 Lokationen (oben RS1) haben. Und ich alle Lokationen abfragen will. Allerding kommt noch eine Anforderung hinzu. Ich möchte NUR die OU=Users in allen Lokationen abfragen.

    Hat kann mir da jemand weiterhelfen? Scripting ist wirklich nicht meins....

    Danke schon mal

    E: das Ziel wäre es diesen Export zu bekommen

    Display Name - Organizational Unit, - Archive State,
    Müllr Sandy - IT.intern/Local/EU/RS1/Users - None




    #2
    Möchtest du denn einfach alle User bekommen, die in der unteren OU=Users sind?

    Aus dem Kopf:

    Get-Mailbox -OrganizationalUnit 'OU=Users,OU=RS1,OU=EU,OU=Local,DC=IT,DC=intern' | where {$_.ArchiveDatabase -eq $null -and $_.DistinguishedName -like '*OU=Users,*'}

    Zumindest geht das wenn man Get-ADUser macht:

    Get-ADUser -Filter * -SearchBase "DC=domain,DC=lokal" | Where-Object { $_.DistinguishedName -like '*OU=user,*' -and $_.DistinguishedName -like '*Siemens*'}

    Wenn man das Where weg lässt, listet er alles auf, was unter domain.lokal ist. Mit dem ersten Where filtert er alles raus, was in einer OU=user ist und mit dem zweiten Where filtert er nur Nutzer raus, die Siemens im Namen haben.

    Ansonsten kannst du natürlich auch ein Array machen, mit dem Inhalt der 120 Lokationen und dann durch das Array gehen und mit jedem Feld den Befehl ausführen.

    Müsste dann so aussehen (ebenfalls aus dem Kopf, ohne zu testen):
    $locations = @("RS1", "RS2", "RS3")
    for ($i=0; $i -lt $locations.length; $i++) {
    Get-Mailbox -OrganizationalUnit 'OU=Users,OU=' + $locations[$i] + ',OU=EU,OU=Local,DC=IT,DC=intern' | where {$_.ArchiveDatabase -eq $null}
    }

    Kommentar


      #3
      Ja genau. möchte alle User in allen Lokationen die kein Online Archiv aktiviert haben im exchange und in der OU=Users sind. Da in den anderen OUs auch resourcen postfächer usw sind, möchte ich diese auslassen.

      Jede Lokation hat eine ou=users (OU=Users,OU=RS1, 'OU=Users,OU=FFM1, 'OU=Users,OU=FFM2 usw

      Kommentar


        #4
        Update zum unteren Statement:

        $locations = @("RS1", "RS2", "RS3")
        for ($i=0; $i -lt $locations.length; $i++) {
        Get-Mailbox -OrganizationalUnit ("OU=Users,OU="+$locations[$i]+",OU=EU,OU=Local,DC=IT,DC=intern") | where {$_.ArchiveDatabase -eq $null}
        }


        Und das was du als Ergebnis haben willst, gibst du einfach als select dahinter an.

        Also zB
        | select DisplayName, ArchiveState

        Kommentar


          #5
          Ok das ist soweit klar. Bedeutet für mich allerdings, dass ich 160 lokations Kürzel eintragen muss ja?

          Kommentar


            #6
            Zitat von pReeestar
            Ok das ist soweit klar. Bedeutet für mich allerdings, dass ich 160 lokations Kürzel eintragen muss ja?
            Kannst doch ünergeordnet dann auslesen

            Kommentar


              #7
              Zitat von pReeestar
              Ok das ist soweit klar. Bedeutet für mich allerdings, dass ich 160 lokations Kürzel eintragen muss ja?
              In dem Fall ja. Aber ich hatte ja im zweiten Post noch eine andere Möglichkeit gepostet, wo einfach mit einer Where-Klausel die OU=Users überprüft wird. Die würde ich bevorzugen.

              Get-Mailbox -OrganizationalUnit 'OU=Users,OU=RS1,OU=EU,OU=Local,DC=IT,DC=intern' | where {$_.ArchiveDatabase -eq $null -and $_.DistinguishedName -like '*OU=Users,*'}

              Dann listet er dir alles auf, was im DistinguishedName den Part OU=Users, beinhaltet.

              Zitat von Slave
              Kannst doch ünergeordnet dann auslesen
              Nope leider nicht.

              Ansonsten ist es aber auch ne Sache von 3 Minuten, sich kurz alle OUs auszulesen und mit Notepad++ zu einem Array zusammen zu führen.

              Kommentar


                #8
                Zitat von DerKiLLa
                Zitat von pReeestar
                Ok das ist soweit klar. Bedeutet für mich allerdings, dass ich 160 lokations Kürzel eintragen muss ja?
                In dem Fall ja. Aber ich hatte ja im zweiten Post noch eine andere Möglichkeit gepostet, wo einfach mit einer Where-Klausel die OU=Users überprüft wird. Die würde ich bevorzugen.

                Get-Mailbox -OrganizationalUnit 'OU=Users,OU=RS1,OU=EU,OU=Local,DC=IT,DC=intern' | where {$_.ArchiveDatabase -eq $null -and $_.DistinguishedName -like '*OU=Users,*'}

                Dann listet er dir alles auf, was im DistinguishedName den Part OU=Users, beinhaltet.

                Zitat von Slave
                Kannst doch ünergeordnet dann auslesen
                Nope leider nicht.

                Ansonsten ist es aber auch ne Sache von 3 Minuten, sich kurz alle OUs auszulesen und mit Notepad++ zu einem Array zusammen zu führen.
                In diesem fall leider nur die Location=RS1 da diese leider übergeordnet ist.

                Kommentar


                  #9
                  Versteh ich nicht ganz.

                  Liste mir doch mal 3 komplette DistinguishedNames der OU Users auf, von 3 Locations.

                  Um alle OUs zu bekommen, kannst du es zB so machen und mit Notepad++ entsprechend formatieren:

                  Get-ADOrganizationalUnit -Filter * | WHERE {$_.DistinguishedName -like '*OU=users,*' } | select DistinguishedName

                  Edit: Ups, der Befehl oben muss natürlich lauten:

                  Get-Mailbox -OrganizationalUnit 'OU=EU,OU=Local,DC=IT,DC=intern' | where {$_.ArchiveDatabase -eq $null -and $_.DistinguishedName -like '*OU=Users,*'}

                  Oder gar:

                  Get-Mailbox -OrganizationalUnit 'DC=IT,DC=intern' | where {$_.ArchiveDatabase -eq $null -and $_.DistinguishedName -like '*OU=Users,*'}

                  Kommentar


                    #10
                    Also so sieht die AD aus. Ich möchte wie gesagt nur die User in OU=Users für jede Lokation

                    Spoiler: 

                    Kommentar


                      #11
                      Dann sollte das eigentlich passen:

                      Get-Mailbox -OrganizationalUnit 'OU=Local,DC=IT,DC=intern' | where {$_.ArchiveDatabase -eq $null -and $_.DistinguishedName -like '*OU=Users,*'}

                      Dann müsste er dir alle auflisten, die ArchiveDatabase = NULL und im DistinguishedName OU=Users, haben.

                      Ganz egal ob EMEA, AsiaPac oder EU und ganz egal ob AH1 oder BR1.

                      Kommentar


                        #12
                        hab das jetzt mal gecheckt. bekomme genau 7 Einträge raus. Das stimmt noch nicht ganz. Laut Exchange sind es an die 300 :)

                        Aber auf jeden Fall ein fettes Danke für deine Mühen

                        Kommentar


                          #13
                          Siehst du denn im Exchange, welche User es beispielsweise betreffen sollte? Weil dann kannst du dir ja einfach mal den DistinguishedName des Users anschauen (& ArchiveDatabase) und schauen, ob es passt. Ich denke, da liegt eher der Fehler, als am Script.

                          Kommentar


                            #14
                            Zitat von DerKiLLa
                            Siehst du denn im Exchange, welche User es beispielsweise betreffen sollte? Weil dann kannst du dir ja einfach mal den DistinguishedName des Users anschauen (& ArchiveDatabase) und schauen, ob es passt. Ich denke, da liegt eher der Fehler, als am Script.
                            Moin Moin, bin grade noch in ner Telko. Melde mich gleich noch mal. Hat leider nicht funktioniert

                            Kommentar


                              #15
                              ist zwar schon lange her, aber ich glaube get-mailbox gibt standardmäßig keinen DN aus. Also entweder über die Filteroptionen oder über get-aduser in ein array pipen und durch das array mit get-mailbox loopen. (eher unschön).
                              Oder direkt über LDAP die Infos holen.

                              Kommentar

                              Lädt...
                              X