lordofremixes
Goto Top

AD Felder von einem AD ins ein anderes übertragen

Hallo zusammen,

ich habe leider ein Problem, das ich nicht selbst lösen kann und wer weiß, für den ein oder anderen sind es nur wenige Minuten, für mich wären es mehrere Stunden:
Folgendes Problem stellt sich dar:
Ausgangslage: 2 ADs, die nicht miteinander kommunizieren und in unterschiedlichen Domänen zu Hause sind.

Ziel:
ldap Objekte wie streetAddress, postOfficeBox, l, st, postalCode, countryCode
sollen in die neu angelegten Benutzer des neuen ADs übertragen werden (bei dem die Felder streetAddress, postOfficeBox, l, st, postalCode, countryCode) fehlen.

Als gemeinsamer, einziger Schlüssel, der User von AD alt mit User AD verknüpft, dient uns nur:
AD alt --> E-Mail Adresse Feld (ldap Objekt Mail)
AD neu --> ldap Objekt extensionAttribute1

Export in eine CSV mit den genannten Felders als CSV und dann Import im neuen AD?
Aber wie bekomme ich die Schnittstelle her zwischen Benutzer aus AD alt : "Mail" zu AD neu: "extensionAttribute1" ?

Ich bin um jede Hilfe dankbar. Wollte es eigentlich per Copy und Paste machen, aber das würde geschätzt circa eine Ewigkeit dauern.

Bin um jeden Ratschlag dankbar.

Mit freundlichen Grüßen
lordofremixes

Content-ID: 1466547946

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

Ausgedruckt am: 25.11.2024 um 06:11 Uhr

lordofremixes
lordofremixes 04.11.2021 um 17:55:47 Uhr
Goto Top
Kleine Anmerkung noch: im alten AD gibt es ca. 1000 User, im neuen ca. 300.
Es sollen also nur die User mit den Feldern gefüllt werden, die im neuen AD auch unter extensionAttribute1 was stehen haben. alle anderen aus dem alten AD sollen ignoriert werden.
Sorry für diese traurige Aufgabe face-sad
erikro
erikro 04.11.2021 um 18:50:57 Uhr
Goto Top
Moin,

Zitat von @lordofremixes:
ich habe leider ein Problem, das ich nicht selbst lösen kann und wer weiß, für den ein oder anderen sind es nur wenige Minuten, für mich wären es mehrere Stunden:

Wenn Du es lernen willst, dauert das erheblich länger. face-wink

Folgendes Problem stellt sich dar:
Ausgangslage: 2 ADs, die nicht miteinander kommunizieren und in unterschiedlichen Domänen zu Hause sind.

Schlecht. Aber dann wäre das ja keine Aufgabe.

Ziel:
ldap Objekte wie streetAddress, postOfficeBox, l, st, postalCode, countryCode

Das sind keine Objekte, sondern Attribute der Objekte der Klasse "User" (hab grad kein AD zur Hand und kann nicht genau sagen, wie die Klasse(n) heißen).

sollen in die neu angelegten Benutzer des neuen ADs übertragen werden (bei dem die Felder streetAddress, postOfficeBox, l, st, postalCode, countryCode) fehlen.

Als gemeinsamer, einziger Schlüssel, der User von AD alt mit User AD verknüpft, dient uns nur:
AD alt --> E-Mail Adresse Feld (ldap Objekt Mail)
AD neu --> ldap Objekt extensionAttribute1

Export in eine CSV mit den genannten Felders als CSV und dann Import im neuen AD?

Genau so. Wie so oft ist die Powershell Deine beste Freundin. Export gibbet mal auf die Schnelle:

get-aduser -filter * | select [Liste der Attribute, die Du brauchst mit Kommata getrennt] | export-csv zieldatei.csv

Wobei es sein kann, dass einige Attribute nicht direkt erreichbar sind. Dann wird es ein wenig komplizierter.

Aber wie bekomme ich die Schnittstelle her zwischen Benutzer aus AD alt : "Mail" zu AD neu: "extensionAttribute1" ?

Der einfachste Weg wäre, dann im CSV vor dem Import die Spalte "Mail" einfach in "extensionAttribute1" umzubennen. Wieso hat das Attribut eigentlich einen so komischen Namen?

Wie man dann ein CSV in das AD reinlutscht, erzählt Dir Tante Google. Dafür gibt es gefühlt eine Millionen Skripte im Internet. Wenn Du ein AD betreuen willst, musst Du das sowieso lernen. face-wink

Liebe Grüße

Erik
lordofremixes
lordofremixes 04.11.2021 aktualisiert um 20:23:55 Uhr
Goto Top
Hi,

muss das leider notgedrungen wegen einem anderen System machen, da ich Kontaktdaten aus dem alten AD für die User im neuen AD benötige.

Ich versuche es nochmal besser zu erklären, was mein Problem ist:

Ich habe aus dem alten AD jetzt alle Daten als CSV, die ich benötige, sprich:
Company, departement, Mail, PhoneHomePrimary, Title

Diese Attribute der Objekte der Klasse "User" müssen jetzt in das neue AD. Die User in dem neuen AD sind angelegt, aber in einer ganz anderen Domäne und haben diese Attribute siehe oben nicht, sondern bisher nur Vorname und Nachname, um es grob zu sagen.

Beim Import muss jetzt folgendes stattfinden:

- importiere meine CSV (mit allen LDAP Attributen, die ich vorhin exportiert habe) mit dieser Bedingung:
- Feld "Mail" aus der CSV muss gleich sein mit dem Extension ExtensionAttribute1 aus dem neuen AD (das ist unsere Verknüpfung)
-- wenn das Feld "Mail" aus der CSV mit dem ExtensionAttribute1 im neuen AD übereinstimmt
- Kopiere alle Attribute in diesen User bei dem dann die Bedingung erfüllt ist "Mail" aus CSV = "ExtensionAttribute1" ins neuen AD mit den o.g. Attributen (Company, departement, ExtensionAttribute1, Mail, PhoneHomePrimary, Title)

Ich hoffe, es ist irgendwie verständlich, was ich meine
lordofremixes
lordofremixes 04.11.2021 um 20:27:56 Uhr
Goto Top
Vereinfacht gesagt:

Nimm die Attribute der CSV und kopiere sie in das AD Objekt
aber nur wenn = "Mail" der CSV mit "ExtensionAttribute1" des AD Objekts übereinstimmt
erikro
erikro 04.11.2021 um 21:26:57 Uhr
Goto Top
Moin,

ich habe das schon verstanden. Gut, die CSV hast Du schon. Jetzt noch die Überschrift ändern von "Mail" in "ExtensionAttribute1" und dann eins der vielen, vielen, vielen Skripts, die es im Internet so gibt, um AD-User anzulegen oder zu manipulieren, so anpassen, dass es die Bedingung nimmt und die anderen Attribute reinschreibt.

Oder Du bezahlst jemanden, der Dir das Skript schreibt. face-wink

Liebe Grüße

Erik
lordofremixes
lordofremixes 04.11.2021 um 21:36:36 Uhr
Goto Top
Nein, hast du eben nicht verstanden ;) Wenn ich Mail in Extension Attribut ändere, und das dann importiere, überschreibt er ja "ExtensionAttribute1" und das soll ja nur der Abgleich sein....

LG
lordofremixes
lordofremixes 04.11.2021 aktualisiert um 21:47:13 Uhr
Goto Top
Ich brauch doch nur jemanden, der mit die Zeile liefert:

wenn = "Mail" der CSV mit "ExtensionAttribute1" des AD Objekts übereinstimmt --> NUR dann Importieren
erikro
erikro 04.11.2021, aktualisiert am 08.11.2021 um 19:13:08 Uhr
Goto Top
Nein, Du hast es nicht verstanden. Es macht die Sache halt nur einfacher. Du musst für jeden Datensatz nach dem User suchen, bei dem die beiden Attribute gleich sind. Du kannst das Feld auch Mail heißen lassen oder KuhliefumdenTeich. Das ist vollkommen egal. Ich wollte Dir das Leben nur einfacher machen. Hast Du den User gefunden, zu dem der DS gehört, schreibst Du die Attribute rein. Dabei ist es dann auch vollkommen egal, ob Du das ExtensionAttribute1 mit Mail überschreibst oder nicht. Das ist ja sowieso gleich. Also so mal schnell hingerotzt:

$altesAD = import-csv deine.csv -delimiter ";" -encoding utf8 # Delimiter und Encoding bitte auf das CSV anpassen  
foreach($user in $altesAD) {

         $neuerADUser = get-aduser -filter {ExtensionAttribute1 -eq $($user.mail)} # edit: Klammern korrigiert
         set-aduser $neuerADUser -streetAddress $user.streetAddress ...

}

Was hinter dem ... kommt, müsste ich jetzt nachschlagen, welches der Attribute bei set-aduser wie heißt. face-wink
https://docs.microsoft.com/en-us/powershell/module/activedirectory/set-a ...
lordofremixes
lordofremixes 04.11.2021 um 22:07:04 Uhr
Goto Top
Das heißt ja , wenn ich deinen Code nehme und den set Befehl noch hinbekomme, bin ich ja eigentlich fertig?
Und wie bekomme ich das hin, dass er den set befehl nur für ne bestimmte OU setzt?
Dann setz ich mir nämlich ne Test OU auf, und teste...
Weil händisch bin ich jetzt nach 2 Stunden immer noch bei dem Buchstaben A ...
lordofremixes
lordofremixes 04.11.2021 aktualisiert um 22:45:17 Uhr
Goto Top
$altesAD = import-csv Altes_AD.csv -delimiter "," -encoding utf8   
foreach($user in $altesAD) {

$neuerADUser = get-aduser -filter (ExtensionAttribute1 -eq $($user.mail))
 set-aduser $neuerADUser -company$user.company	-extensionAttribute1$user.extensionAttribute1 -facsimiletelephonenumber$user.facsimiletelephonenumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$userpostalcode. -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber -title$user.title	

Meinst du ich bin der Lösung nahe oder soll ich es lieber bleiben lassen?

LG
lordofremixes
em-pie
em-pie 04.11.2021 aktualisiert um 22:35:03 Uhr
Goto Top
Moin,

um das nur auf eine TEST-OU loszulassen, kannst du im Get-ADUser() noch die SearchBase angeben:

$path = "OU=Service accounts,OU=Users,OU=WebbWorld,DC=webbworld,DC=local"  
$neuerADUser = get-aduser -SearchBase $path -filter * -properties name
Quelle: https://social.technet.microsoft.com/Forums/en-US/4a3eeade-31da-4842-b93 ...

Gruß
em-pie
erikro
erikro 05.11.2021 um 08:44:22 Uhr
Goto Top
Moin,

Zitat von @lordofremixes:

> $altesAD = import-csv Altes_AD.csv -delimiter "," -encoding utf8   
> foreach($user in $altesAD) {
> 
> $neuerADUser = get-aduser -filter (ExtensionAttribute1 -eq $($user.mail))
>  set-aduser $neuerADUser -company$user.company	-extensionAttribute1$user.extensionAttribute1 -facsimiletelephonenumber$user.facsimiletelephonenumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$userpostalcode. -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber -title$user.title	
> 
> 

Meinst du ich bin der Lösung nahe oder soll ich es lieber bleiben lassen?

Zwischen Parameter und Variable (-parameter $var) gehört ein Leerzeichen und die schließende Klammer fehlt. Die Kollegin @em-pie hat ja schon gesagt, wie Du das testen kannst.

Liebe Grüße

Erik
em-pie
em-pie 05.11.2021 um 09:53:44 Uhr
Goto Top
Zitat von @erikro:
Die Kollegin @em-pie hat ja schon gesagt, wie Du das testen kannst.
*räusper*
Dafür sind meine "Rundungen" an den "falschen" Stellen face-wink
erikro
erikro 05.11.2021 um 09:59:33 Uhr
Goto Top
Zitat von @em-pie:

Zitat von @erikro:
Die Kollegin @em-pie hat ja schon gesagt, wie Du das testen kannst.
*räusper*
Dafür sind meine "Rundungen" an den "falschen" Stellen face-wink

Habe ich das falsch in Erinnerung? Hattest Du nicht früher ein weibliches Profilbild? Sorry
em-pie
em-pie 05.11.2021 um 10:04:51 Uhr
Goto Top
Zitat von @erikro:
Habe ich das falsch in Erinnerung? Hattest Du nicht früher ein weibliches Profilbild?
Jo, hatte ich. Aber man reift ja mit der Zeit, sodass ich nun ein schlichter Typ mit einer "Fliege" bin face-big-smile

Sorry
Alles gut. Das ist ja der Vor-/ Nachteil der mitunter anonymen digitalen Welt: man kann sich nie sicher sein, wer da hinter steckt.
Bei @aqui vermutet man ja sicherlich auch kein cooles Häschen (aber wissen tun wir es ja auch nicht ^^)
lordofremixes
lordofremixes 05.11.2021 um 14:14:47 Uhr
Goto Top
 
$altesAD = import-csv Altes_AD.csv -delimiter "," -encoding utf8   
foreach($user in $altesAD) {

$neuerADUser = get-aduser -filter (ExtensionAttribute1 -eq $ ($user.mail))}
 set-aduser $neuerADUser -company$user.company	-extensionAttribute1$user.extensionAttribute1 -facsimiletelephonenumber$user.facsimiletelephonenumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$userpostalcode. -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber -title$user.title	


aber wo kommen denn diese zwei Zeilen da hin?
$path = "OU=Service accounts,OU=Users,OU=WebbWorld,DC=webbworld,DC=local"  
$neuerADUser = get-aduser -SearchBase $path -filter * -properties name

LG lordofremixes
em-pie
em-pie 05.11.2021 um 14:33:01 Uhr
Goto Top
Zeile 4 und Zeile 5 (nachdem du die angepasst hast)
lordofremixes
lordofremixes 05.11.2021 aktualisiert um 15:07:06 Uhr
Goto Top
Hi,

danke dass du dir die Zeit nimmst face-smile

$altesAD = import-csv Altes_AD.csv -delimiter "," -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=Test_Users,OU=kannichnichtsagen,DC=auchnicht,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter (ExtensionAttribute1 -eq $ ($user.mail))}
 set-aduser $neuerADUser -company$user.company	-extensionAttribute1$user.extensionAttribute1 -facsimiletelephonenumber$user.facsimiletelephonenumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$userpostalcode. -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber -title$user.title	

Ich würde es jetzt so testen? Kannst du bitte nochmal drüber schauen?

LG
lordofremixes
em-pie
em-pie 05.11.2021 um 15:42:24 Uhr
Goto Top
Sieht auf den ersten Blick passabel aus.

Schaue dir mal noch den Parameter "WhatIf" an und hänge den an deine Zeile 5 an face-wink
lordofremixes
lordofremixes 05.11.2021 um 15:52:46 Uhr
Goto Top
Die Fehlermeldung ist so lang, dass es die Seite sprengen würde, wenn ich es hier einfüge
lordofremixes
lordofremixes 05.11.2021 um 15:59:15 Uhr
Goto Top
extensionAttribute1 : Die Benennung "extensionAttribute1" wurde nicht als Name eines Cmdlet, einer Funktion, einer  
Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad
korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:3 Zeichen:54
+ ... r = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq $ ( ...
+                                               ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (extensionAttribute1:String) , CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
lordofremixes
lordofremixes 05.11.2021 um 16:00:38 Uhr
Goto Top
Zwischen Parameter und Variable (-parameter $var) gehört ein Leerzeichen und die schließende Klammer fehlt. Die Kollegin @em-pie hat ja schon gesagt, wie Du das testen kannst.

das hatte ich ja gemacht
lordofremixes
lordofremixes 05.11.2021 aktualisiert um 16:48:39 Uhr
Goto Top
Ich nochmal ;)

in meiner CSV stehen ja diese Überschriften drin:
company mail facsimiletelephonenumber I mobile physicalDeliveryOfficeName postalcode st streetAdress telephoneNumber title


und dieses Script führe ich aus:
$altesAD = import-csv Altes_AD.csv -delimiter "," -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=Test_Users,OU=kannichnichtsagen,DC=auchnicht,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq $ ($user.mail))}
 set-aduser $neuerADUser -company$user.company	-extensionAttribute1$user.extensionAttribute1 -facsimiletelephonenumber$user.facsimiletelephonenumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$userpostalcode. -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber

und er soll ja nur die User überschreiben, bei dem die Mail des Script mit dem ExtensionAttribute1 des zu importierenden ADs übereinstimmt. Wo kann da jetzt noch der Fehler liegen?
lordofremixes
lordofremixes 05.11.2021 um 16:27:57 Uhr
Goto Top
Ich hab mir das Script jetzt 50x angeschaut, und finde den Fehler einfach nicht
em-pie
em-pie 05.11.2021 um 16:48:10 Uhr
Goto Top
Dein Fehler liegt in Zeile 3, Zeichen 54

Bzw. Hast du in Zeile 4 ein $ zu viel/ falsch sowie in Zeile 5 auch Fehler drin.

Nimm dir nen Kaffee und dann noch mal langsam von vorneface-wink


P.S.
Du kannst auch deine Beiträge editieren und musst nicht alles separat neu kommentieren…
lordofremixes
lordofremixes 05.11.2021 um 17:07:21 Uhr
Goto Top
Häääääh???
Dein Fehler liegt in Zeile 3, Zeichen 54 --> Wo ist da ein Fehler?
Zeile 4 --> -eq $ ($user.mail))} das sollte doch korrekt sein?
Zeile 5 korrigiert

Ich hol mir jetzt ein Bier!
lordofremixes
lordofremixes 05.11.2021 um 17:11:05 Uhr
Goto Top
P.S.
Du kannst auch deine Beiträge editieren und musst nicht alles separat neu kommentieren…

und woher weißt du dann welcher der aktuelle Code ist, den ich verwende?

LG
lordofremixes
lordofremixes 05.11.2021 um 17:15:59 Uhr
Goto Top
Ich weiß genau das die Zeile 4 mit dem $ falsch ist, aber wie schreibt man das denn richtig

$altesAD = import-csv Altes_AD.csv -delimiter "," -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=Test_Users,OU=kannichnichtsagen,DC=auchnicht,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq$ ($user.mail))} 
 set-aduser $neuerADUser -company$user.company	-extensionAttribute1$user.extensionAttribute1 -facsimileTelephoneNumber$user.facsimileTelephoneNumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$user.postalcode. -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber
 
 

LG
lordofremixes
lordofremixes 05.11.2021 um 18:21:17 Uhr
Goto Top
Kannst du mir vielleicht noch sagen wie ich das in. Zeile 4 richtig schreibe? Habe alles probiert
lordofremixes
lordofremixes 05.11.2021 aktualisiert um 19:41:57 Uhr
Goto Top
-eq$ ($user.mail))
em-pie
em-pie 05.11.2021 um 19:52:41 Uhr
Goto Top
Du sollst das $ weglassen, meine Güte…
Nicht -eq$ sondern nur -eq

Lies dir bitte einmal die Grundlagen zur Powershell durch…

Und in Zeile 5 wiederholst du dich einmal.

Bitte noch einmal in aller Ruhe dir die Zeilen anschauen und versuchen zu verstehen, was da passiert.
lordofremixes
lordofremixes 05.11.2021 um 20:20:22 Uhr
Goto Top
Jetzt schau mal, das hab ich doch schon alles tausend mal probiert.
Aber warum kommt dann immer
extensionAttribute1 : Die Benennung "extensionAttribute1" wurde nicht als Name eines Cmdlet, einer Funktion, einer  
Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad
korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:3 Zeichen:54
+ ... r = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq($us ...
+                                               ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (extensionAttribute1:String) , CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Da ist doch irgendwo der Wurm drin
lordofremixes
lordofremixes 05.11.2021 um 20:38:16 Uhr
Goto Top
$altesAD = import-csv c:\script\altesad.csv -delimiter "," -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=TestAccounts,OU=UserAccounts,OU=xxx,OU=DE,DC=xxx,DC=xxx,DC=xxx,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq ($user.mail))} 
 set-aduser $neuerADUser -company$user.company	-extensionAttribute1$user.extensionAttribute1 -facsimileTelephoneNumber$user.facsimileTelephoneNumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$user.postalcode. -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber
 
lordofremixes
lordofremixes 05.11.2021 um 20:39:49 Uhr
Goto Top
ich kann mir jetzt wohl schlecht die Grundlagen der Powershell durchlesen, wenn ich nur paar Zeilen korrigiert haben will....
lordofremixes
lordofremixes 05.11.2021 um 20:52:44 Uhr
Goto Top
dann erklär mit doch bitte, wieso er das extensionAttribute1 nicht findet? weil dann kann ich es ja auch verstehen
lordofremixes
lordofremixes 07.11.2021 um 17:51:38 Uhr
Goto Top
Hallo em-pie,

sorry, dass ich nochmal störe, aber ich weiß gerade echt nicht weiter.
Das ist mein Code, bei dem ich alle Fehler korrigiert habe:


$altesAD = import-csv C:\Script\altesad.csv -delimiter ";" -encoding utf8
foreach($user in $altesAD) {
$path = "OU=TEST,OU=UserAccounts,OU=geheim,OU=DE,DC=geheim,DC=xxx,DC=xxx2,DC=com"
$neuerADUser = get-aduser -SearchBase $path -filter (extensionAttribute1) -eq ($user.mail)}
set-aduser $neuerADUser -company$user.company -extensionAttribute1$user.extensionAttribute1 -facsimiletTelephoneNumber$user.facsimileTelephoneNumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$user.postalcode -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber


Es kommt immer die Fehlermeldung:

extensionAttribute1 : Die Benennung "extensionAttribute1" wurde nicht als Name eines Cmdlet, einer Funktion, einer
Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad
korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:3 Zeichen:54

back-to-top... r = get-aduser -SearchBase $path -filter (extensionAttribute1) -eq =( ...

back-to-top~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : ObjectNotFound: (extensionAttribute1:String) , CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Kann es vielleicht sein, dass er das extensionAttribute1 nicht auslesen kann?

LG
lordofremixes
erikro
erikro 08.11.2021 um 08:46:21 Uhr
Goto Top
Zitat von @lordofremixes:

Kannst du mir vielleicht noch sagen wie ich das in. Zeile 4 richtig schreibe? Habe alles probiert

Einfach mit copy&paste das reinschreiben, was ich geschrieben habe:

-eq[LEERTASTE]$($user.extensionAttribute1)

Wenn Du die Leertasten mal machst, wo sie nicht hingehören, und nicht machst, wo sie hingehören, dann wird das nichts.

Die zwei $ sind richtig. Warum das so ist, kannst Du hier lernen.
lordofremixes
lordofremixes 08.11.2021 aktualisiert um 16:39:47 Uhr
Goto Top
Hallo Erik,

erstmal danke für deine Geduld!!
Ich habe heute das Script nochmals versucht auszuführen, wieder die Fehlermeldung bekommen, und dann alles bisher erstellen Script gelöscht, und dann nochmal neu erstellt. So sieht mein Script jetzt aus:

$altesAD = import-csv C:\Script\altesad.csv -delimiter ";" -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=TEST,OU=UserAccounts,OU=...com"  
$neuerADUser = get-aduser -SearchBase $path -filter (mail) -eq[ ]$($user.extensionAttribute1)}
set-aduser $neuerADUser -company$user.company	-extensionAttribute1$user.extensionAttribute1 -facsimiletTelephoneNumber$user.facsimileTelephoneNumber -mobile$user.mobile -physicalDeliveryOfficeName$user.physicalDeliveryOfficeName -postalcode$user.postalcode -st$user.st -streetAdress$user.streetAdress -telephoneNumber$user.telephoneNumber
Ich hoffe sehr, dass ich jetzt keinen Syntax Fehler mehr drin habe.

In meiner CSV habe ich folgende Spaltenüberschriften:
mail company facsimiletelephonenumber I mobile physicalDeliveryOfficeName postalcode st streetAdress telephoneNumber

Führe ich das dann aus, kommt leider immer noch der Fehler:

mail : Die Benennung "mail" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines
ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern
enthalten), und wiederholen Sie den Vorgang.
In Zeile:3 Zeichen:54

back-to-top$neuerADUser = get-aduser -SearchBase $path -filter (mail) -eq[ ]$($u ...

back-to-top~~~~

+ CategoryInfo : ObjectNotFound: (mail:String) , CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Ich will es nur nochmal zusammen, nicht dass man mich falsch versteht:
Hier sind meine Werte in der CSV in den Spaltenüberschriften:
mail company facsimiletelephonenumber I mobile physicalDeliveryOfficeName postalcode st streetAdress telephoneNumber

Im neuen AD ist "extensionAttribute1" das gemeinsame Feld zum alten AD Feld "Mail", und die Werte aus der CSV sollen dann in das neue AD geschrieben werden.

Was mache ich falsch?

LG
lordofremixes
erikro
erikro 08.11.2021 um 18:10:42 Uhr
Goto Top
Moin,

Zitat von @lordofremixes:
Was mache ich falsch?

Du tippst ab und machst nicht copy&paste. face-wink

Das ist nochmal mein Original
$altesAD = import-csv deine.csv -delimiter ";" -encoding utf8 # Delimiter und Encoding bitte auf das CSV anpassen  
foreach($user in $altesAD) {

         $neuerADUser = get-aduser -filter (ExtensionAttribute1 -eq $($user.mail))
         set-aduser $neuerADUser -streetAddress $user.streetAddress ...

}

Und nochmal. Du musst unter o. g. Adresse nachschauen, welche Attribute Du mit set-aduser direkt setzen kannst mit z. B.

-streetAddress $user.streetAddress

und welche nicht. Und achte bitte auch auf das Leerzeichen zwischen dem Ausdrücken.

Liebe Grüße

Erik
lordofremixes
lordofremixes 08.11.2021 um 18:59:41 Uhr
Goto Top
Hi,

ich bin echt blöd, ich hab das tatsächlich falsch kopiert, und die eckige Klammer zu war auch an der falschen Stelle.
Jetzt sollte es aber passen:

$altesAD = import-csv C:\Script\altesad2.csv -delimiter ";" -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=TEST,OU=UserAccounts,OU=xxx,OU=DE,DC=xxx,DC=xxx,DC=xx,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq $($user.mail))
set-aduser $neuerADUser -company $user.company	
}

Kann es sein, dass der Fehler

erikro 08.11.2021 um 18:10:42 Uhr

Und nochmal. Du musst unter o. g. Adresse nachschauen, welche Attribute Du mit set-aduser direkt setzen kannst mit z. B.

-streetAddress $user.streetAddress

und welche nicht. Und achte bitte auch auf das Leerzeichen zwischen dem Ausdrücken.

Liebe Grüße
Erik


Das habe ich jetzt gemacht, und mir speziell nur das Feld company rausgesucht:
set-aduser $neuerADUser -company $user.company	

Jetzt habe ich aber sogar ein Fehler mehr:

extensionAttribute1 : Die Benennung "extensionAttribute1" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad  
korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
In Zeile:3 Zeichen:54
+ ... r = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq $($ ...
+                                               ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (extensionAttribute1:String) , CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Set-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie einen gültigen Wert für das Argument an, und führen Sie den Befehl erneut aus.  
In Zeile:4 Zeichen:12
+ set-aduser $neuerADUser -company $user.company
+            ~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser

Kannst du bitte nochmal darüber schauen?
erikro
Lösung erikro 08.11.2021 um 19:11:11 Uhr
Goto Top
Zitat von @lordofremixes:

Hi,

ich bin echt blöd, ich hab das tatsächlich falsch kopiert, und die eckige Klammer zu war auch an der falschen Stelle.
Jetzt sollte es aber passen:

> $altesAD = import-csv C:\Script\altesad2.csv -delimiter ";" -encoding utf8   
> foreach($user in $altesAD) {
> $path = "OU=TEST,OU=UserAccounts,OU=xxx,OU=DE,DC=xxx,DC=xxx,DC=xx,DC=com"  
> $neuerADUser = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq $($user.mail))
> set-aduser $neuerADUser -company $user.company	
> }
> 

Kann es sein, dass der Fehler

erikro 08.11.2021 um 18:10:42 Uhr

Und nochmal. Du musst unter o. g. Adresse nachschauen, welche Attribute Du mit set-aduser direkt setzen kannst mit z. B.

-streetAddress $user.streetAddress

und welche nicht. Und achte bitte auch auf das Leerzeichen zwischen dem Ausdrücken.

Liebe Grüße
Erik


Das habe ich jetzt gemacht, und mir speziell nur das Feld company rausgesucht:
> set-aduser $neuerADUser -company $user.company	
> 

Jetzt habe ich aber sogar ein Fehler mehr:

> extensionAttribute1 : Die Benennung "extensionAttribute1" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad  
> korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
> In Zeile:3 Zeichen:54
> + ... r = get-aduser -SearchBase $path -filter (extensionAttribute1 -eq $($ ...
> +                                               ~~~~~~~~~~~~~~~~~~~
>     + CategoryInfo          : ObjectNotFound: (extensionAttribute1:String) , CommandNotFoundException
>     + FullyQualifiedErrorId : CommandNotFoundException
> 
> Set-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie einen gültigen Wert für das Argument an, und führen Sie den Befehl erneut aus.  
> In Zeile:4 Zeichen:12
> + set-aduser $neuerADUser -company $user.company
> +            ~~~~~~~~~~~~
>     + CategoryInfo          : InvalidData: (:) [Set-ADUser], ParameterBindingValidationException
>     + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser
> 

Kannst du bitte nochmal darüber schauen?

Oooops. Mein Fehler. Das muss natürlich

- filter {ExtensionAttribute1 -eq ... }

heißen. Also geschweifte Klammern und nicht runde. Aber nun machst Du es richtig. Langsam rantasten. face-wink

Liebe Grüße

Erik
lordofremixes
lordofremixes 08.11.2021 um 19:38:03 Uhr
Goto Top
Hi,

hab ich gemacht:
foreach($user in $altesAD) {
$path = "OU=TEST,OU=UserAccounts,OU=xxx,OU=xxx,DC=xxx,DC=xx,DC=xx,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter {extensionAttribute1 -eq $($user.mail)}
set-aduser $neuerADUser -company $user.company	
}

Fehler:

get-aduser : Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "path" ungültig ist. Ändern Sie den  
Wert des Arguments "path", und führen Sie den Vorgang erneut aus.  
In Zeile:3 Zeichen:16
+ ... uerADUser = get-aduser -SearchBase $path -filter {extensionAttribute1 ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-ADUser], PSArgumentException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.Management.Automation.PSArgumentException,Microsoft.ActiveD
   irectory.Management.Commands.GetADUser

Set-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie  
einen gültigen Wert für das Argument an, und führen Sie den Befehl erneut aus.
In Zeile:4 Zeichen:12
+ set-aduser $neuerADUser -company $user.company
+            ~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser

Kann es sein, dass sich -SearchBase und -filter irgendwie beißen?
Den Pfad habe ich eben nochmal überprüft (den distingushedName kopiert von der Test OU)
erikro
erikro 08.11.2021 um 19:48:05 Uhr
Goto Top
Wie gesagt, war hingerotzt. face-wink

So sollte es gehen:

$neuerADUser = get-aduser -SearchBase $path -filter "extensionAttribute1 -eq '$($user.mail)'"  
lordofremixes
lordofremixes 08.11.2021 aktualisiert um 20:01:06 Uhr
Goto Top
Hi,

der obere Fehler ist jetzt komplett weg face-smile

Jetzt kommt nur noch ein Fehler wegen dem Set Befehl:
Set-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie  
einen gültigen Wert für das Argument an, und führen Sie den Befehl erneut aus.
In Zeile:4 Zeichen:12
+ set-aduser $neuerADUser -company $user.company
+            ~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser

Das ist Code:
$altesAD = import-csv C:\Script\altesad2.csv -delimiter ";" -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=TESTxxx,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter "extensionAttribute1 -eq '$($user.mail)'"  
set-aduser $neuerADUser -company $user.company	
}
Zwei weitere Fragen noch:
1. Ist die Anordnung der Spaltenüberschriften in der scv egal oder muss es die gleich Reihenfolge wie im set Befehl haben?
2. Ich benutze immer Power Shell mit dem Active Directory Modul, das ist korrekt oder würde powershell reichen?

Gruß
lordofremixes
lordofremixes
lordofremixes 08.11.2021 aktualisiert um 20:39:47 Uhr
Goto Top
Sorry Erik, aber falscher Alarm:

Es sind doch noch 2 Fehler:

get-aduser : Der Suchfilter wurde nicht erkannt
In Zeile:3 Zeichen:16
+ ... uerADUser = get-aduser -SearchBase $path -filter "extensionAttribute1 ...  
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-ADUser], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8254,Microsoft.ActiveDirectory.Management.Commands.GetADUser

Set-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie  
einen gültigen Wert für das Argument an, und führen Sie den Befehl erneut aus.
In Zeile:4 Zeichen:12
+ set-aduser $neuerADUser -company $user.company
+            ~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser

Das war der Code:
$altesAD = import-csv C:\Script\altesad2.csv -delimiter ";" -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=TEST,OU=UserAccounts,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter "extensionAttribute1 -eq '$($user.mail)'"  
set-aduser $neuerADUser -company $user.company	
}
erikro
erikro 08.11.2021 um 21:23:11 Uhr
Goto Top
Moin,

Zitat von @lordofremixes:
Das war der Code:
> $altesAD = import-csv C:\Script\altesad2.csv -delimiter ";" -encoding utf8   
> foreach($user in $altesAD) {
> $path = "OU=TEST,OU=UserAccounts,DC=com"  
> $neuerADUser = get-aduser -SearchBase $path -filter "extensionAttribute1 -eq '$($user.mail)'"  
> set-aduser $neuerADUser -company $user.company	
> }
> 

$path = "OU=TEST,OU=UserAccounts,DC=com"  

Das kann nicht richtig sein. Da fehlt mindestens ein DC=irgendwas.
lordofremixes
lordofremixes 08.11.2021 um 21:30:35 Uhr
Goto Top
Ja, das ist schon klar, hab es nur anonymisiert..

Ist korrekt bei mir, sieht so aus:

$path = "OU=TEST,OU=UserAccounts,OU=xxx,OU=DE,DC=xxx,DC=xxx,DC=xxx,DC=com"
lordofremixes
lordofremixes 08.11.2021 um 21:33:22 Uhr
Goto Top
Hab ihn kopiert vom distinguishedName der TEST OU , der passt auf jeden Fall.
lordofremixes
lordofremixes 09.11.2021 um 14:23:21 Uhr
Goto Top
Hallo Erik,

hast du noch eine Idee?

Gruß
lordofremixes
Dani
Dani 09.11.2021 aktualisiert um 15:44:21 Uhr
Goto Top
@erikro
Das kann nicht richtig sein. Da fehlt mindestens ein DC=irgendwas.
Warum. Single Lable Domain? face-wink

@lordofremixes
Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie
einen gültigen Wert für das Argument an, und führen Sie den Befehl erneut aus.
hast du noch eine Idee?
Es steht doch deutlich in der Fehlermeldung, was nicht funktioniert bzw. welcher Parameter fehlt. Zudem gibt es auch entsprechende Hilfeseiten zu den Powershell cmdlets. Einfach mal ein bisschen expermentieren.

2. Ich benutze immer Power Shell mit dem Active Directory Modul, das ist korrekt oder würde powershell reichen?
Die Antwort findest du hier: ActiveDirectory


Gruß,
Dani
lordofremixes
lordofremixes 09.11.2021 um 15:49:30 Uhr
Goto Top
Hallo Dani,

ich will das Script ja auch verstehen können, insbesondere die unterschiedlichen Schreibweisen und Fehlermeldungen, das Problem ist nur, dass ich bis Morgen 9 Uhr ein gefülltes AD benötige und jetzt halt alles manuell kopiere und gerade erst angefangen habe, daher bleibt mir keine Zeit mehr zum Forschen...

Gruß
lordofremixes
lordofremixes
lordofremixes 09.11.2021 um 15:59:55 Uhr
Goto Top
Du könntest mir den Fehler ja vielleicht kurz erklären, damit ich doch noch was mit dem Script anfangen kann ;)

Gruß
lordofremixes
erikro
erikro 09.11.2021 um 16:00:36 Uhr
Goto Top
Moin,

Zitat von @Dani:
Es steht doch deutlich in der Fehlermeldung, was nicht funktioniert bzw. welcher Parameter fehlt.

Das ist aber der Folgefehler aus dem leeren Ergebnis des nicht funktionierenden get-aduser. face-wink

Liebe Grüße

Erik
erikro
erikro 09.11.2021 um 16:02:52 Uhr
Goto Top
Moin,

Zitat von @lordofremixes:
hast du noch eine Idee?

Irgendwas muss da mit Deinem CSV nicht stimmen. Ich habe das jetzt kurz getestet. Der Code sollte richtig sein. Poste doch mal die ersten drei Zeilen Deines CSV. Persönliche Daten bitte ändern.

Ich war heute den ganzen Tag unterwegs und habe auch gleich noch einen Termin. Aber vielleicht habe ich heute spät Abend ja noch Lust. face-wink

Liebe Grüße

Erik
lordofremixes
lordofremixes 09.11.2021 um 18:02:34 Uhr
Goto Top
Hi,

ich hab was interessantes rausgefunden. CSV folgt gleich...

Gruß
lordofremixes
lordofremixes
lordofremixes 09.11.2021, aktualisiert am 21.04.2022 um 17:07:40 Uhr
Goto Top
Hi,

also dein Script funktioniert wunderbar, nachdem ich die Spaltenüberschriften auch noch mal korrigiert habe.

Meine CSV sieht so aus:

unbenannt

mail;company;Fax;Office;MobilePhone;City;postalcode;state;streetAddress;OfficePhone
test1@test-ag.com;test AG;+49 6273 8293 299;Hamburg;;Hamburg;26491;RP;Winkerlsweg 1;+49 6273 8293 171
test2@test-ag.com;test AG;+49 6273 8293 299;Hamburg;+49 172 7644 885;Hamburg;26491;;Winkerlsweg 1;
test3@test-ag.com;test AG;;Hamburg;;;26491;;;+49 6273 8293 230

Script:
$altesAD = import-csv C:\Script\altesad2.csv -delimiter ";" -encoding utf8   
foreach($user in $altesAD) {
$path = "OU=TEST,OU=UserAccounts,OU=xxx,OU=xx,DC=xxx,DC=xxx,DC=xxx,DC=com"  
$neuerADUser = get-aduser -SearchBase $path -filter "extensionAttribute1 -eq '$($user.mail)'"  
set-aduser $neuerADUser -company $user.company  -Fax $user.Fax  -Office $user.Office -MobilePhone $user.MobilePhone   -City $user.City -postalcode $user.postalcode -state $user.state -streetAddress $user.streetAddress -OfficePhone $user.OfficePhone
} 

Führe ich das Script das aus, und behalte im CSV nur den User drin, den ich auch in der Test_OU hab, werden die AD Felder befüllt.
Führe ich das Script aus mit mehreren Datensätzen und der test1@test-ag.com ist z.B. an anderer Stelle, spuckt er mir wieder:

Set-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie  
einen gültigen Wert für das Argument an, und führen Sie den Befehl erneut aus.
In Zeile:4 Zeichen:12
+ set-aduser $neuerADUser -company $user.company  -Fax $user.Fax  -Offi ...
+            ~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADUser
aus

Stören vielleicht Zeilen, bei dem Werte fehlen (nicht jede Zeile hat ja z.B. das Feld MobilePhone) ?

Gruß
lordofremixes
lordofremixes
lordofremixes 09.11.2021 um 19:29:30 Uhr
Goto Top
Ich hab jetzt noch rausgefunden, dass wenn die CSV Zeilen immer voll befüllt sind (also alle Werte sind befüllt, läuft es durch)
Fehlt in der CSV etwas, wie z.B. .streetAddress , macht er nichts...

LG
erikro
erikro 09.11.2021 um 21:39:15 Uhr
Goto Top
Moin,

herzlichen Glückwunsch. Ein paar Anmerkungen zum Schluss:

1. Das ist der Winklersweg in Hamburg. Einen Winkerlsweg gibt es m. W. nicht. face-wink
2. Wenn das Ergebnis des Filters nichts ergibt, dann gibt es natürlich eine Fehlermeldung von set-aduser, dass da nichts ist, was er setten kann. Das sollte man z. B. mit einem if oder einem try-catch abfangen.
3. Eigentlich sollten fehlende Attribute nicht stören. Jedenfalls habe ich das noch nicht erlebt. Es ist ja durchaus normal, dass mal einer kein Fax hat oder seine Mobilnummer nicht angeben will.
4. Das mit den falschen Überschriften ahnte ich. Die müssen natürlich stimmen. Sonst klappt das mit dem Filtern nicht. Das ist ein wenig lästig bei der Objektorientierung, dass man eben auch Eigenschaften abfragen kann, die gar nicht da sind, was dann nicht zum direkten Fehler führt. Aber daran gewöhnt man sich.

Du scheinst ein beharrlicher Mensch zu sein. Weiter so. Nur so lernt man was.

Liebe Grüße

Erik
lordofremixes
lordofremixes 09.11.2021 um 22:05:44 Uhr
Goto Top
Letzt Frage:
Müsste das tatsächlich mit leeren Feldern gehen oder doch nicht? siehe https://social.technet.microsoft.com/Forums/lync/de-DE/5f473e75-ad5d-477 ...

Gruß
lordofremixes
erikro
erikro 09.11.2021 um 22:15:16 Uhr
Goto Top
Oh, da habe ich mich bei set-aduser geirrt. Es geht nicht mit leeren Attributen. Also entweder - das wäre die schnelle Lösung - alle fehlenden Attribute mit z. B. #nv füllen oder set-aduser nur mit den Attributen aufrufen, die beim jeweiligen DS vorhanden sind. Der Ansatz, der in dem Skript steht, das Du verlinkt hast, gefällt mir auf den ersten Blick. Aber, da die Zeit drängt ... face-wink
lordofremixes
lordofremixes 09.11.2021 um 22:21:59 Uhr
Goto Top
Alle fehlenden #nv mit füllen, aber dann steht doch da #nv drin oder?
lordofremixes
lordofremixes 09.11.2021 um 22:24:13 Uhr
Goto Top
Kann man nicht sowas schreiben wie "" dass er was leeres reinschreibt?
Dann würde ich nämlich echt alle Felder, die leer sind mit irgendeinem String befüllen...Wenn das geht?


oder set-aduser nur mit den Attributen aufrufen, die beim jeweiligen DS vorhanden sind.

Schwierig, da z.B. die HandyNummer wichtig ist für morgen, und gerade die steht ja manchmal drin und manchmal nicht..
erikro
erikro 09.11.2021 um 22:32:49 Uhr
Goto Top
Zitat von @lordofremixes:

Alle fehlenden #nv mit füllen, aber dann steht doch da #nv drin oder?

Ja. Aber stört das? Dann sieht man gleich, dass da nichts ist, wo doch was sein sollte. face-wink Aber wenn es stört, dann halt ein Leerzeichen. face-wink
lordofremixes
lordofremixes 09.11.2021 um 22:38:10 Uhr
Goto Top
Wenn das mit der Leertaste geht, ist das doch schon die Lösung.....
Excel alle leeren Felder ne Leertaste rein und fertig-..
erikro
erikro 09.11.2021 um 22:47:39 Uhr
Goto Top
Zitat von @lordofremixes:

Wenn das mit der Leertaste geht, ist das doch schon die Lösung.....
Excel alle leeren Felder ne Leertaste rein und fertig-..

Probiere es. Dann steht da was. Das sollte set-aduser reichen.
lordofremixes
lordofremixes 09.11.2021 um 23:13:42 Uhr
Goto Top
Leertaste geht nicht, aber ich hab`s mir nochmal überlegt.
Wen stört denn das n/a? Niemanden....
Dann sieht man auch, dass da was fehltface-smile

Geile, einfache Lösung... 1 Stunde vor dem neuen Tag
lordofremixes
lordofremixes 09.11.2021 um 23:13:59 Uhr
Goto Top
Ich spiele jetzt produktiv ein....
lordofremixes
lordofremixes 12.11.2021 um 14:48:46 Uhr
Goto Top
Hat alles wunderbar geklappt. Danke dir!!!

Gruß
lordofremixes
erikro
erikro 15.11.2021 um 15:40:01 Uhr
Goto Top
Gerne.