lordofremixes
Goto Top

Einfaches Tool um AD Felder zu exportieren

Hallo zusammen,

gibt es ein einfaches, kostenloses Tool, um alle möglichen Felder im AD (Name, Funktion, Abteilung, Niederlassung, Fax, Pager, Kostenstelle, Straße usw..) in Excel, CSV oder Text zu exportieren?
Mit dem AD integrierten "Liste exportieren" Feature ist das zwar möglich, ich kann aber nicht alle Felder exportieren, die ich benötige, wie z.B. Fax, Pager oder Kostenstelle?

Ist leider noch ein Windows Server 2008 Sp2, aber kein R2, daher leider noch kein Active Directory Module...

Wäre nett, wenn mir jemand Tipps geben könnte.

Gruß
lordofremixes

Content-ID: 251168

Url: https://administrator.de/contentid/251168

Ausgedruckt am: 24.11.2024 um 11:11 Uhr

Cthluhu
Cthluhu 07.10.2014 um 12:57:47 Uhr
Goto Top
Hi,

IMHO kann man mit Excel und VBA das AD auslesen. Einfach mal nach "excel vba ad auslesen" suchen. Beispielcode gibts haufenweise im Internet.

mfg

Cthluhu
114757
114757 07.10.2014 aktualisiert um 13:16:32 Uhr
Goto Top
Windows Server 2007
hä?? den gibt's nicht face-wink höchstens 2008 und der hat das AD Module für die Powershell
Import-Module ActiveDirectory
get-aduser -Filter * -Properties * | select * | Export-Csv 'c:\export.csv' -delimiter ';' -NoType -Encoding UTF8  
Gruß jodel32
Tommy70
Tommy70 07.10.2014 um 13:58:34 Uhr
Goto Top
Hallo,

falls dir Htm Dateien auch weiter helfen, könnte José Active-Directory-Dokumentation etwas für dich sein.

Tom
lordofremixes
lordofremixes 07.10.2014 um 14:47:49 Uhr
Goto Top
Zitat von @114757:

> Windows Server 2007
hä?? den gibt's nicht face-wink höchstens 2008 und der hat das AD Module für die Powershell
> Import-Module ActiveDirectory
> get-aduser -Filter * -Properties * | select * | Export-Csv 'c:\export.csv' -delimiter ';' -NoType -Encoding  
> UTF8
> 
Gruß jodel32

Hallo jodel32,
Sorry meinte 2008, nur noch kein R2. Finde da leider kein AD Modul für die Powershell?!
Gruß
lordofremixes
lordofremixes 07.10.2014 um 14:48:26 Uhr
Goto Top
Zitat von @Tommy70:

Hallo,

falls dir Htm Dateien auch weiter helfen, könnte [http://www.faq-o-matic.net/jose/ José
Active-Directory-Dokumentation] etwas für dich sein.

Tom

José Active-Directory-Dokumentation ist echt gut, gibt aber leider kein Auslesen von den Feldern Fax, Pager usw...

lordofremixes
lordofremixes
lordofremixes 07.10.2014 aktualisiert um 15:28:07 Uhr
Goto Top
Hallo zusammen,

ich finde einfach kein Script, welches mir eine Excelliste mit den folgenden Feldern erstellt:

- Vorname
- Nachname
- Initialien
- Rufnummer
- E-Mail
- Webseite
- Straße
- Ort
- PLZ
- Benutzeranmeldename
im Reiter Rufnummern:
- Privat
- Pager
- Fax
- Position
- Anteilung
- Firma

inkl Unter- OU. Hat vielleicht jemand was fertiges ? Google schon seit 4 Stunden...

gruß
lordofremixes
Tommy70
Tommy70 07.10.2014 um 15:31:16 Uhr
Goto Top
Zitat von @lordofremixes:

> Zitat von @Tommy70:
>
> Hallo,
>
> falls dir Htm Dateien auch weiter helfen, könnte [http://www.faq-o-matic.net/jose/ José
> Active-Directory-Dokumentation] etwas für dich sein.
>
> Tom

José Active-Directory-Dokumentation ist echt gut, gibt aber leider kein Auslesen von den Feldern Fax, Pager usw...

lordofremixes

Hallo,

im Standard nicht. Ist aber selbst erweiterbar da alles über die Datei JoseExec.vbs ausgelesen wird.
Somit sollte es auch möglich sein, die noch fehlenden Felder (Fax, Pager usw...) auch anzuzeigen.

Tom
lordofremixes
lordofremixes 07.10.2014 um 15:41:30 Uhr
Goto Top
Zitat von @Tommy70:

> Zitat von @lordofremixes:
>
> > Zitat von @Tommy70:
> >
> > Hallo,
> >
> > falls dir Htm Dateien auch weiter helfen, könnte [http://www.faq-o-matic.net/jose/ José
> > Active-Directory-Dokumentation] etwas für dich sein.
> >
> > Tom
>
> José Active-Directory-Dokumentation ist echt gut, gibt aber leider kein Auslesen von den Feldern Fax, Pager usw...
>
> lordofremixes

Hallo,

im Standard nicht. Ist aber selbst erweiterbar da alles über die Datei JoseExec.vbs ausgelesen wird.
Somit sollte es auch möglich sein, die noch fehlenden Felder (Fax, Pager usw...) auch anzuzeigen.

Tom

Hallo Tom,

danke noch für die Info. Habe aber gerade noch Rücksprache gehalten, und es soll leider definitiv in Excel exportiert werden..
Ansonsten TOP TOOL!

Gruß
colinardo
colinardo 07.10.2014, aktualisiert am 14.11.2014 um 12:40:08 Uhr
Goto Top
Moin lordofremixes,
ohne das AD-Modul kannst du es mit einem ADSI-SearcherObjekt in Powershell machen:
# Datei für den Export angeben
$csvPath = 'C:\export.csv'  
# OU angeben (es wird der Subtree duchsucht)
$OU = 'ou=Marketing,dc=domain,dc=intern'  
$objSearch = New-Object System.DirectoryServices.DirectorySearcher 
$objSearch.PageSize = 15000 
$objSearch.Filter = "(&(objectCategory=User)(objectCategory=Person))"  
$objSearch.SearchRoot = "LDAP://$OU"  
$objSearch.SearchScope = [System.DirectoryServices.SearchScope]::Subtree
$allUsers = $objSearch.FindAll() 
$all = @()
foreach ($user in $allUsers) { 
    $o = $user.GetDirectoryEntry()
    $propertyHT = @"  
        Username = $($o.SamAccountName.toString())
        Vorname = $($o.Givenname.ToString())
        Nachname = $($o.sn.toString())
        Initialien = $($o.initials.toString())
        Rufnummer = $($o.telephoneNumber.toString())
        E-Mail = $($o.mail.toString())
        Webseite = $($o.wWWHomePage.toString())
        Straße = $($o.streetAddress.toString())
        Ort = $($o.l.toString())
        PLZ = $($o.postalCode.toString())
        Nummer Privat = $($o.HomePhone.toString())
        Nummer Pager = $($o.pager.toString())
        Nummer Fax = $($o.facsimileTelephonenumber.toString())
        Position = $($o.Title.toString())
        Abteilung = $($o.Department.toString())
        Firma = $($o.Company.toString())
"@  
    $all += new-Object PSObject -Property (ConvertFrom-StringData -StringData $propertyHT)
 }

$all | export-csv $csvPath -Delimiter ";" -NoTypeInformation -Encoding UTF8 -Force  
Grüße Uwe
lordofremixes
lordofremixes 07.10.2014 um 16:12:51 Uhr
Goto Top
Zitat von @colinardo:

Moin lordofremixes,
ohne das AD-Modul kannst du es mit einem ADSI-SearcherObjekt in Powershell machen:
> # Datei für den Export angeben
> $csvPath = 'C:\export.csv'  
> # OU angeben (es wird der Subtree duchsucht)
> $OU = 'ou=Marketing,dc=domain,dc=intern'  
> # --------------------------------------------
> $objSearch = New-Object System.DirectoryServices.DirectorySearcher 
> $objSearch.PageSize = 15000 
> $objSearch.Filter = "(&(objectCategory=User)(objectCategory=Person))"  
> $objSearch.SearchRoot = "LDAP://$OU"  
> $objSearch.SearchScope = [System.DirectoryServices.SearchScope]::Subtree
> $allUsers = $objSearch.FindAll() 
> $all = @()
> foreach ($user in $allUsers) { 
>     $o = $user.GetDirectoryEntry()
>     $username = $o.SamAccountName.toString()
>     $vorname = $o.Givenname.ToString()
>     $nachname = $o.sn.toString()
>     $initialien = $o.initials.toString()
>     $rufnummer = $o.telephoneNumber.toString()
>     $email = $o.mail.toString()
>     $Webseite = $o.wWWHomePage.toString()
>     $strasse = $o.streetAddress.toString()
>     $ort = $o.l.toString()
>     $plz = $o.postalCode.toString()
>     $nummer_privat = $o.HomePhone.toString()
>     $nummer_pager = $o.pager.toString()
>     $nummer_fax = $o.facsimileTelephonenumber.toString()
>     $position = $o.Title.toString()
>     $abteilung = $o.Department.toString()
>     $firma = $o.Company.toString()
> 
>     $all += new-Object PSObject -Property
> @{"Benutzername"=$username;"Vorname"=$vorname;"Nachname"=$nachname;"Initialien"=$initialien;"Rufnummer"=$rufnummer;"E-Mail"=$email;"Webseite"=$Webseite;"Strasse"=$strasse;"PLZ"=$plz;"Ort"=$ort;"Nummer  
> Privat"=$nummer_privat;"Nummer  
> Pager"=$nummer_pager;"Fax"=$nummer_fax;"Position"=$position;"Abteilung"=$abteilung;"Firma"=$firma}  
> }
> 
> $all | export-csv $csvPath -Delimiter ";" -NoTypeInformation -Encoding UTF8 -Force  
> 
Grüße Uwe


Hallo Uwe!

ich habe den Quellcode direkt in die Powershell kopiert. Es kommen zig Fehlermeldungen.

Oben in Zeile hab ich folgende Text geändert:
$OU = 'ou=Marketing,dc=domain,dc=intern'
ou habe ich unseren Standort z.B. Berlin eingegeben (Unser AD ist in Standorte aufgeteilt), bei Domain den Namen unserer Domäne aber was muss ich bei dc=intern eingeben? Oder muss ich noch weitere Zeilen editieren?

Gruß
lordofremixes
colinardo
colinardo 07.10.2014 aktualisiert um 16:15:04 Uhr
Goto Top
Zitat von @lordofremixes:
ich habe den Quellcode direkt in die Powershell kopiert. Es kommen zig Fehlermeldungen.
GROBER FEHLER! Das kommt in eine Powershelldatei mit der Endung *.ps1

Falls du das noch nie gemacht hast hier die Anleitung dazu ...
back-to-topAnleitung: Wie starte ich Powershell-Scripte
  • Zuerst speichert man den Code in einer Textdatei mit der Endung .ps1.
  • Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten im User-Account freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl Set-ExecutionPolicy RemoteSigned -Force ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden: Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
  • Jetzt kann das Powershell-Script wie weiter unten erläutert in einer Powershell-Konsole oder aus einer CMD-Fenster heraus ausgeführt werden. Wer lieber mit der Maus arbeitet macht einen Rechtsklick auf die Script-Datei und wählt: Mit Powershell ausführen.
  • Alternativ lässt sich ein Script auch ohne das globale Ändern der ExecutionPolicy ausführen indem man die Policy als Parameter auf der Kommandozeile mitgibt:
powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Pfad\Script.ps1"
back-to-topStarten eines Scriptes in einer Powershell-Konsole
Immer den kompletten Pfad zum Script angeben, und wenn er Leerzeichen beinhaltet in Anführungszeichen einschließen:
"C:\Pfad\script.ps1"
Liegt das Script im selben Verzeichnis in dem man sich gerade befindet, kann man es auch so abkürzen:
.\script.ps1
back-to-topStarten von PS-Scripten aus Batch und Kommandozeilen heraus:
Hier gibt es unterschiedliche Methoden, je nach Anforderungen gibt es hier einige Besonderheiten vor allem bei Leerzeichen in Pfaden zu beachten!
Der einfachste Aufruf sieht hier so aus:
powershell.exe -File "C:\Pfad\Script.ps1"
Wenn man dem Script Parameter übergeben möchte:
powershell.exe -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
Wenn man "benannte" Parameter übergeben möchte (die einfachen Hochkommas um den Scriptpfad werden benötigt wenn er Leerzeichen beinhaltet):
powershell.exe -command "&'C:\Pfad\Script.ps1' -par1 'Wert1' -par2 'Wert2'"
Man kann auch mehrere Scripte hintereinander ausführen lassen:
powershell.exe -command "&'C:\Pfad\Script1.ps1';&'C:\Pfad\Script2.ps1'"
Weitere Parameter zeigt einem ein powershell -? in einer Konsole an.
back-to-topStarten von PS-Scripten in der Aufgabenplanung (Taskplaner)
In der jeweiligen Aktion unter "Programm/Script" trägt man powershell.exe ein und unter "Argumente hinzufügen (optional)" trägt man wie oben geschrieben alles was hinter powershell.exe kommt ein - also z.B. -File "C:\Pfad\Script.ps1" "Parameter 1" "Parameter 2"
lordofremixes
lordofremixes 07.10.2014 um 16:17:41 Uhr
Goto Top
Es kommt diese Fehlermeldung:

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Alle Rechte vorbehalten.

PS C:\Users\administrator> # Datei für den Export angeben
PS C:\Users\administrator> $csvPath = 'C:\export.csv'  
PS C:\Users\administrator> # OU angeben (es wird der Subtree duchsucht)
PS C:\Users\administrator> $OU = 'ou=leingarten,dc=lan.blabla.de,dc=s10'  
PS C:\Users\administrator> # --------------------------------------------
PS C:\Users\administrator> $objSearch = New-Object System.DirectoryServices.DirectorySearcher
PS C:\Users\administrator> $objSearch.PageSize = 15000
PS C:\Users\administrator> $objSearch.Filter = "(&(objectCategory=User)(objectCategory=Person))"  
PS C:\Users\administrator> $objSearch.SearchRoot = "LDAP://$OU"  
PS C:\Users\administrator> $objSearch.SearchScope = [System.DirectoryServices.SearchScope]::Subtree
PS C:\Users\administrator> $allUsers = $objSearch.FindAll()
Ausnahme beim Aufrufen von "FindAll" mit 0 Argument(en):  "Eine Referenzauswertung wurde vom Server zurückgesendet.  
"  
Bei Zeile:1 Zeichen:31
+ $allUsers = $objSearch.FindAll <<<< ()
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

PS C:\Users\administrator> $all = @()
PS C:\Users\administrator> foreach ($user in $allUsers) {
>>     $o = $user.GetDirectoryEntry()
>>     $username = $o.SamAccountName.toString()
>>     $vorname = $o.Givenname.ToString()
>>     $nachname = $o.sn.toString()
>>     $initialien = $o.initials.toString()
>>     $rufnummer = $o.telephoneNumber.toString()
>>     $email = $o.mail.toString()
>>     $Webseite = $o.wWWHomePage.toString()
>>     $strasse = $o.streetAddress.toString()
>>     $ort = $o.l.toString()
>>     $plz = $o.postalCode.toString()
>>     $nummer_privat = $o.HomePhone.toString()
>>     $nummer_pager = $o.pager.toString()
>>     $nummer_fax = $o.facsimileTelephonenumber.toString()
>>     $position = $o.Title.toString()
>>     $abteilung = $o.Department.toString()
>>     $firma = $o.Company.toString()
>>
>>     $all += new-Object PSObject -Property @{"Benutzername"=$username;"Vorname"=$vorname;"Nachname"=$nachname;"Initial  
ien"=$initialien;"Rufnummer"=$rufnummer;"E-Mail"=$email;"Webseite"=$Webseite;"Strasse"=$strasse;"PLZ"=$plz;"Ort"=$ort;"N  
ummer Privat"=$nummer_privat;"Nummer Pager"=$nummer_pager;"Fax"=$nummer_fax;"Position"=$position;"Abteilung"=$abteilung;  
"Firma"=$firma}  
>> }
>>
Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:2 Zeichen:33
+     $o = $user.GetDirectoryEntry <<<< ()
    + CategoryInfo          : InvalidOperation: (GetDirectoryEntry:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:3 Zeichen:43
+     $username = $o.SamAccountName.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:4 Zeichen:37
+     $vorname = $o.Givenname.ToString <<<< ()
    + CategoryInfo          : InvalidOperation: (ToString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:5 Zeichen:31
+     $nachname = $o.sn.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:6 Zeichen:39
+     $initialien = $o.initials.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:7 Zeichen:45
+     $rufnummer = $o.telephoneNumber.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:8 Zeichen:30
+     $email = $o.mail.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:9 Zeichen:40
+     $Webseite = $o.wWWHomePage.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:10 Zeichen:41
+     $strasse = $o.streetAddress.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:11 Zeichen:25
+     $ort = $o.l.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:12 Zeichen:34
+     $plz = $o.postalCode.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:13 Zeichen:43
+     $nummer_privat = $o.HomePhone.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:14 Zeichen:38
+     $nummer_pager = $o.pager.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:15 Zeichen:55
+     $nummer_fax = $o.facsimileTelephonenumber.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:16 Zeichen:34
+     $position = $o.Title.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:17 Zeichen:40
+     $abteilung = $o.Department.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei Zeile:18 Zeichen:33
+     $firma = $o.Company.toString <<<< ()
    + CategoryInfo          : InvalidOperation: (toString:String) , RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

PS C:\Users\administrator> $all | export-csv $csvPath -Delimiter ";" -NoTypeInformation -Encoding UTF8 -Force  
colinardo
colinardo 07.10.2014 aktualisiert um 16:27:05 Uhr
Goto Top
Wie oben geschrieben kommt der Code in eine .ps1-Datei !!!

ebenso ist deine Formatierung der OU falsch.
Das wird so gemacht ...
$OU = 'ou=leingarten,dc=lan,dc=blabla,dc=de'
Das Format sollte eigentlich jeder Admin beherrschen ...

Den Pfad zu CSV in der zweiten Zeile kannst du natürlich auch anpassen ....
lordofremixes
lordofremixes 07.10.2014 um 16:40:09 Uhr
Goto Top
Zitat von @colinardo:

Wie oben geschrieben kommt der Code in eine .ps1-Datei !!!

ebenso ist deine Formatierung der OU falsch.
Das wird so gemacht ...
> $OU = 'ou=leingarten,dc=lan,dc=blabla,dc=de'
> 
Das Format sollte eigentlich jeder Admin beherrschen ...

Den Pfad zu CSV in der zweiten Zeile kannst du natürlich auch anpassen ....


$OU = 'ou=leingarten,dc=lan,dc=blabla,dc=de'
Das Format sollte eigentlich jeder Admin beherrschen ...
--> Jetzt kenn`s ich ja.. ;)

Danke für deine Ausführungen. War mir alles unbekannt..
Ich habe jetzt folgendes gemacht:

1. cmd als Admin ausgeführt
2. powershell.exe -ExecutionPolicy RemoteSigned -File "C:\Pfad\Script.ps1" eingetippt
3. Script im Ordner als ps1 Datei erstellt
4. Zeile oben RICHTIG angepasst

--> und schon gehts! DANKE.

Du noch eine Frage: Wie müsste man das Script ändern, um die Unter - OU wegzulassen?
colinardo
Lösung colinardo 07.10.2014 aktualisiert um 16:53:25 Uhr
Goto Top
Zitat von @lordofremixes:
-> und schon gehts! DANKE.
abä sichä face-smile
Du noch eine Frage: Wie müsste man das Script ändern, um die Unter - OU wegzulassen?
$objSearch.SearchScope = [System.DirectoryServices.SearchScope]::OneLevel
http://msdn.microsoft.com/en-us/library/ms677937%28v=vs.85%29.aspx
lordofremixes
lordofremixes 07.10.2014 um 16:53:21 Uhr
Goto Top
Einfach Hammer!!! Sprachlos
lordofremixes
lordofremixes 22.10.2014 um 11:14:20 Uhr
Goto Top
Zitat von @colinardo:

> Zitat von @lordofremixes:
> -> und schon gehts! DANKE.
abä sichä face-smile
> Du noch eine Frage: Wie müsste man das Script ändern, um die Unter - OU wegzulassen?
> $objSearch.SearchScope = [System.DirectoryServices.SearchScope]::OneLevel
> 
http://msdn.microsoft.com/en-us/library/ms677937%28v=vs.85%29.aspx

Hallo Uwe,

wenn ich die Zeile :

$objSearch.SearchScope = [System.DirectoryServices.SearchScope]::Subtree

durch

$objSearch.SearchScope = [System.DirectoryServices.SearchScope]::OneLevel

ersetze, und das Script dann ausführe, sind die csv Dateien immer 0 KB groß.
Irgendeine Idee wieso das nicht klappt?

Gruß
lordofremixes
colinardo
colinardo 22.10.2014 um 11:19:25 Uhr
Goto Top
dann sind da keine User in der OU auf diesem Level, läuft hier einwandfrei, sorry .
lordofremixes
lordofremixes 22.10.2014 aktualisiert um 11:30:34 Uhr
Goto Top
Zitat von @colinardo:

dann sind da keine User in der OU auf diesem Level, läuft hier einwandfrei, sorry .

Dann liegt es wahrscheinlich daran, dass die User ja in der OU unter User drin sind, und das Script nur in der OU schaut.
Wie passe ich die Zeile :

$OU = 'ou=test,dc=lan,dc=testfirma,dc=de'

so an, dass es in der OU 'test' in der Unter-OU 'User'schaut?
colinardo
colinardo 22.10.2014 aktualisiert um 11:52:56 Uhr
Goto Top
$OU = 'ou=User,ou=test,dc=lan,dc=testfirma,dc=de' 
lordofremixes
lordofremixes 22.10.2014 aktualisiert um 11:49:54 Uhr
Goto Top
Zitat von @colinardo:

> $OU = 'ou=User,ou=test,dc=lan,dc=testfirma,dc=de' 
> 

Da war ich ja nah dran;)

hatte:

$OU = 'ou=test,ou=TGE,dc=lan,dc=testfirma,dc=de'

Danke!
colinardo
colinardo 22.10.2014 um 11:52:04 Uhr
Goto Top
lordofremixes
lordofremixes 22.10.2014 um 13:10:04 Uhr
Goto Top
ultrashark
ultrashark 14.11.2014 um 12:27:24 Uhr
Goto Top
Bei mir kommt es immer zu Folgendem Fehler
Unerwartetes Token "in" im Ausdruck oder in der Anweisung.  
Bei C:\temp\test.ps1:13 Zeichen:20
+ > foreach ($user in <<<<  $allUsers) {
    + CategoryInfo          : ParserError: (in:String) , ParseException
    + FullyQualifiedErrorId : UnexpectedToken

Wie kommt das?
colinardo
colinardo 14.11.2014 aktualisiert um 12:35:55 Uhr
Goto Top
Zitat von @ultrashark:
Wie kommt das?
du hast wahrscheinlich den zitierten Code von @lordofremixes kopiert ... da sind die führenden ">"-Zeichen natürlich nicht powershell-konform !
ultrashark
ultrashark 14.11.2014 um 12:37:29 Uhr
Goto Top
oh gott ich bin so blöd heute ist nicht mein tag danke für die rückmeldung
lordofremixes
lordofremixes 11.12.2014 um 11:54:54 Uhr
Goto Top

Hallo Uwe!

Wie kann ich das oben stehendes Script erweitern, um auch noch das AD Feld Vorgesetzter und das Feld Mitarbeiter im Reiter 'Organisation' auszulesen?
Hast du da eine Idee?

Gruß
lordofremixes
colinardo
colinardo 11.12.2014 aktualisiert um 12:17:11 Uhr
Goto Top
Zitat von @lordofremixes:
Wie kann ich das oben stehendes Script erweitern, um auch noch das AD Feld Vorgesetzter und das Feld Mitarbeiter im Reiter
'Organisation' auszulesen?
Hast du da eine Idee?
Moin lordo,
für den Vorgesetzten kannst du die Hashtable durch diesen Eintrag erweitern
Vorgesetzter = $(if($o.Manager -ne $null){$o.Manager.toString().Split(",").Substring(3)})
Das Feld Mitarbeiter hat den Ldap-Namen directReports
http://www.selfadsi.de/user-attributes-w2k8.htm
Das lass ich dir mal als Hausaufgabe. Habe hier gerade kein Objekt mit dieser Eigenschaft zur Hand ...

Grüße Uwe
lordofremixes
lordofremixes 11.12.2014 um 16:12:15 Uhr
Goto Top
Zitat von @colinardo:

> Zitat von @lordofremixes:
> Wie kann ich das oben stehendes Script erweitern, um auch noch das AD Feld Vorgesetzter und das Feld Mitarbeiter im Reiter
> 'Organisation' auszulesen?
> Hast du da eine Idee?
Moin lordo,
für den Vorgesetzten kannst du die Hashtable durch diesen Eintrag erweitern
> Vorgesetzter = $(if($o.Manager -ne $null){$o.Manager.toString().Split(",").Substring(3)})
> 
Das Feld Mitarbeiter hat den Ldap-Namen directReports
http://www.selfadsi.de/user-attributes-w2k8.htm
Das lass ich dir mal als Hausaufgabe. Habe hier gerade kein Objekt mit dieser Eigenschaft zur Hand ...

Grüße Uwe

Hallo Uwe!

Danke für die Antwort. Habe das Script um die Zeilen:

 $firma = $o.Company.toString()
    $mitarbeiter= $o.directReports.toString()
    $Vorgesetzter = $(if($o.Manager -ne $null){$o.Manager.toString().Split(",").Substring(3)})  
    
    $all += new-Object PSObject -Property @{"Benutzername"=$username;"Vorname"=$vorname;"Nachname"=$nachname;"Initialien"=$initialien;"Rufnummer"=$rufnummer;"E-Mail"=$email;"Webseite"=$Webseite;"Strasse"=$strasse;"PLZ"=$plz;"Ort"=$ort;"Nummer Privat"=$nummer_privat;"Nummer Pager"=$nummer_pager;"Fax"=$nummer_fax;"Position"=$position;"Abteilung"=$abteilung;"Firma"=$firma;"Mitarbeiter"=$mitarbeiter;"Vorgesetzter"=$vorgesetzter}  
}

erweitert. Hat auch geklappt. Habe ich das so richtig gemacht?
colinardo
colinardo 11.12.2014 aktualisiert um 16:19:29 Uhr
Goto Top
^^Zitat von @lordofremixes:^
erweitert. Hat auch geklappt. Habe ich das so richtig gemacht?
Yup, ist zwar nicht mehr die Codevariante von oben (hatte das damals ganz oben noch etwas optimiert) aber soweit syntaktisch i.O.

Grüße Uwe