Jump to content

StStanke

Members
  • Gesamte Inhalte

    11
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von StStanke

  1. Hallo zusammen, 

     

    ich habe ein kleines Problem weil ich mal so vollkommen auf dem Schlauch stehe. Ich hab ein Script gebaut mit dem ich User einer Gruppe an eine "Mustergruppe" angleichen kann, heißt neue dazu nicht mehr vorhandene raus. Nun müsste ich aber hinterher auch ein Log haben in dem ich sehen kann was das Script gemacht hat und da liegt mein Problem das krieg ich einfach nicht hin. 

     

    Mein code sieht so aus:

    cls
    Clear-Host
    Set-StrictMode -Version "2.0"
    import-module Activedirectory
     
    # Variablen festlegen
     
    $useref = Get-ADGroupMember Script_Test_Stanke_1
    $bestand = Get-ADGroupMember Script_Test_Stanke_2 
    $allusers = @($useref)
     
     
    # Neue User hinzufügen
     
    function Add ()
    {
    Write-Host "User werden hinzugefügt..."
     
    if ($bestand.Count -ne $null)
    {
    $Add = @( Compare-Object $bestand $allusers -PassThru | where {$_.SideIndicator -eq "=>"})
    if ($Add.Count -gt 0)
    {
    Add-ADGroupMember Script_Test_Stanke_2 -Members $Add
    Write-Host "User wurden hinzugefügt..."
    }
    else
    {
    Write-Host "Keine neuen User"
    }
    }
    else
    {
    Add-ADGroupMember $bestand -Members $allusers
    Write-Host "User wurden hinzugefügt..."
    }
    }
     
     
    # Nicht mehr verwendete User löschen     
    function Remove ()
    {
    Write-Host "User werden entfernt..."
     
    if ($bestand.Count -ne $null)
    {
    $Remove = @( Compare-Object $allusers $bestand -PassThru | where {$_.SideIndicator -eq "=>"})
    if ($Remove.Count -gt 0)
    {
    Remove-ADGroupMember Script_Test_Stanke_2 -Members $Remove -Confirm:$false
    Write-Host "User wurden entfernt..."
    }
    else
    {
    Write-Host "Keine alten User"
    }
    }
    else
    {
    Write-Host "Keine alten User"
    }
    }
     
     Add;
     Remove;
    

    Wie kriege ich nun hier ein log erzeugt?

     

    Ich hoffe ihr könnt mir helfen. 

  2. Tach,

     

    also: Nein ich meine NICHT den Container sondern eine OU die sinnvollerweise einfach stumpf "Useres" genannt wurde aber die interessiert mich auch nicht mich interessieren OU's die 2 Ebenen weiter darunter aufgehängt wurden.

     

    So was will ich eigentlich machen:

     

    Ich will regelmäßig einen Report aus dem AD ziehen in dem die Daten "samaccountname”,"mail","PasswordExpired","LastLogonDate" in Form einer .csv ausgegeben werden die dann auf einem Share gespeichert wird. Grundsätzlich läuft auch alles nur wäre es schön wenn ich das ganze auf eine bestimmte OU eingrenzen könnte. Macht ja keinen Sinn wenn da Postfächer u.Ä. mit drinhängen bläst nur die Tabelle auf über 30k Zeilen auf das muss ja nich sein woll.

     

    So warum soll es PS sein?

     

    Ja weil das ganze in ein bestehendes scrpit rein soll und weil mir zugegeben keine einfacherer kostenlose Möglichkeit eingefallen ist.

  3. Zeile im Script wäre:

     

    #Variablen setzen
    $Properties=@(“samaccountname”,"mail","PasswordExpired","LastLogonDate")
    #Userobjekte in das Array $Users einlesen
    $Users = @(Get-ADUser -Filter '*' -SearchBase "OU=Users,DC=DOMS,DC=KVWL,DC=DE" -Properties $Properties)


    Moin,

     

    du kannst nicht zwei OUs auf einmal abfragen, sondern immer nur eine.

     

    Gruß, Nils

     

    Ja das dachte ich mir schon fast aber das Kernproblem ist ja auch das ich nich an bestimmte OU's ran komme

  4. Ich frage ab

     

    “samaccountname”,"mail","PasswordExpired","LastLogonDate"

     

    Mit Ebene 1 meine ich OU's die direkt unter der Domäne hängen und mit Ebene 2 meine ich OU'S die Unter einer OU der Ebene 1 Hängen.

     

    Wenn ich nun nur 1 OU der Ebene 1 Abfrage läuft alles nehme ich eine 2. dazu dann kriege ich den Fehler der oben angegeben ist.

     

    Nehme ich nun wie du gesagt hast OU=Ebene2,OU=Ebene1,DC=OOOO,DC=OOOO,DC=DE kriege ich wieder den Fehler.

     

    der name der OU's stimmt

  5. Es müsste OU=Ebene2,OU=Ebene1,DC=OOOO,DC=OOOO,DC=DE heissen.

     

    Das ist eine LDAP Schreibweise. Wenn du dir nicht sicher bist kannst du diese auch per Active Directory Users & Computers auslesen. Eigenschaften einer OU im Reiter Attribute unter distinguishedName.

     

    Ich habs nun mal so versucht Ergebnis ist das gleiche und dabei ist es egal ob ich OU's aus Ebene1 & Ebene2 nehme oder 2 OU's aus Ebene1

    so langsam zweifle ich an mir selber

  6. Moin zusammen,
     
    ich habe folgendes vor:
     
    Ich möchte eine Liste von Usern aus dem AD auslesen die in einer bestimmten OU liegen bekomme aber immer einen Fehler ausgegeben.
     
    Mein Script sieht wie folgt aus:
     

    #AD Modul importieren
    Import-Module ActiveDirectory
    #Variablen setzen
    $Properties=@(“samaccountname”,"mail","PasswordExpired","LastLogonDate")
    #Userobjekte in das Array $Users einlesen
    $Users = @(Get-ADUser -Filter '*' -SearchBase "OU=Ebene1/Ebene2,DC=OOOO,DC=OOOO,DC=DE" -Properties $Properties)
    #Anlage der DataTabelle mit Spalten für jede Property in Properties
    $DataTable=New-Object System.Data.DataTable("ExportUsers")
    $Properties | foreach {
    $Column = New-Object System.Data.DataColumn($_)
    $DataTable.Columns.Add($Column)
    }
    #Befüllen der DataTable mit Daten
    foreach ($User in $Users){
    $PropertiesInRow =@()
    foreach($Property in $Properties) {
    $OFS=$myOFS
    $PropertiesInRow += [String]$($User.$($Property.ToString()))
    $OFS="+"
    }#foreach($Property in $Properties)
    $DataTable.Rows.Add($PropertiesInRow) |Out-Null
    }#foreach ($User in $Users)
    #Ausgabe
    $DataTable | Format-Table -Auto
    $DataTable | Export-Csv "c:\temp\LastLogonDate.csv" -Delimiter ";"

     

    Wenn ich nur in OU Ebene 1 Suche ist auch alles kein Problem aber sobald ich versuche eine Ebene "Tiefer" zu gehen bekomme ich folgende Fehlermeldung:

     

     

     

    Get-ADUser : Verzeichnisobjekt nicht gefunden
    Bei Zeile:16 Zeichen:22
    + $Users = @(Get-ADUser <<<<  -Filter '*' -SearchBase "OU=Ebene1/Ebene2,DC=OOOO,DC=OOOO,DC=DE" -Properties $Properties)
        + CategoryInfo          : ObjectNotFound: ( :) [Get-ADUser], ADIdentityNotFoundException
        + FullyQualifiedErrorId : Verzeichnisobjekt nicht gefunden,Microsoft.ActiveDirectory.Management.Commands.GetADUser

     

     

     

     

    Die OU's sind wie folgt strukturiert im AD:

     

    OU Ebene1 = Alles

     

    OU Ebene2 = Postfächer; Gruppen; ect.

     

    OU Ebene3 = Benutzer1;Benutzer2; ect.

     

    Eigentlich muss ich die OU's in Ebene 3 einzeln ansteuern können, hat jemand ne Idee?
     

     

    Grüße

×
×
  • Neu erstellen...