Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Anlegen von Usern mit PowerShell

Frage Entwicklung

Mitglied: Festus94

Festus94 (Level 1) - Jetzt verbinden

15.05.2012, aktualisiert 23:05 Uhr, 15957 Aufrufe, 12 Kommentare

Ich scheitere beim Versuch mittels PowerShell User im AD anzulegen, welche aus einer CSV-Datei stammen.

Guten Abend,

ich sitze nun schon einige Stunden vor einem PowerShell-Skript und werde aus den Fehlermeldungen einfach nicht schlau genug, um das Skript ans Laufen zu bringen.

Ich möchte mit PowerShell aus einer CSV-Datei User ins AD importieren, jedoch erhalte ich immer folgende Fehlermeldung:

Fehlender Ausdruck nach dem unären Operator "-".

Mein Skript sieht so aus:

Import-Module ActiveDirectory

while(Import-CSV users.csv){
New-ADUser
-SamAccountName $_.SamAccountName
-Surname $_.Surname
-GivenName $_.GivenName
-DisplayName $_.DisplayName
-Description $_.Description
-AccountPassword $_.AccountPassword
-ChangePasswordAtLogon: $true
-Enabled: $true
-PasswordNeverExpires: $true
-Path "LDAP://OU=OU1,OU=OU2,DC=DOMÄNE,DC=local"

Add-ADGroupMember
-Identity "LDAP://CN=CN1,OU=OU1,OU=OU2,DC=DOMÄNE,DC=local"
-Members $_.SamAccountName
}

Meine CSV-Datei:

GivenName;Surname;SamAccountName;AccountPassword;Description;DisplayName;Path
Max;Mustermann;MMustermann;passwort;Test;"Max Mustermann";"OU:Users,DC=SCHULADMIN,DC=local"
Ellen;Bogen;EllenBogen;password;User;"Ellen Bogen";"OU:Users,DC=SCHULADMIN,DC=local"


Könnt Ihr mir helfen den Fehler zu finden ?


Vielen Dank im Vorraus !!!


tbnwadm
Mitglied: lenny4me
16.05.2012 um 07:44 Uhr
Hallo,

sind die Zeilenumbrüche für bessere lesbarkeit oder sieht Dein Script wirklich so aus?
Bitte warten ..
Mitglied: NeverEnds
16.05.2012 um 07:54 Uhr
Moin,

schau dir das mal an.

http://gallery.technet.microsoft.com/scriptcenter/New-User-Creation-too ...

Ich habe zwar dieses Script noch nicht ausprobiert, aber ich nutze 2 andere von Rich Prescott. Der ist gut...



Ich sag immer warum das Rad neuerfinden....


Gruß
Never!
Bitte warten ..
Mitglied: mak-xxl
16.05.2012 um 09:19 Uhr
Moin tbnwadm,

wenn Dein Script genauso aussieht, dann erscheint der Fehler bei der Option -ChangePasswordAtLogon und den folgenden - Doppelpunkte sind hier nicht vorgesehen.

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: Festus94
16.05.2012 um 13:02 Uhr
Hallo,

ja, mein Skript sieht exakt so aus.

@Never: Danke für den Tipp, aber das sieht mir viel zu komoliziert aus. Ich würde mir das gerne so einfach wie möglich halten und nach Möglichkeit selbst zur Lösung kommen, um dabei auch was zu lernen. ;)

@Mario: Danke, aber meine PS sagt, der Fehler liegt noch davor. Ich habe de Doppelpunkte entfernt.

Ich habe jetzt zur Sicherheit mal alle Leerzeichen aus dem Skript entfernt. Meine PS gibt mir folgenden Fehler:

Fehlender Ausdruck nach dem unären Operator "-".
Bei C:\Users\<Mein Benutzername>\Desktop\add.ps1:4 Zeichen:7

- <<<< SamAccountName $_.SamAccountName

+ CategoryInfo : ParserError: (-:String) [], ParseException
+ FullyQualifiedErrorId : MissingExpressionAfterOperator

Allerding sieht das für mich richtig aus. Habt Ihr eine Idee ?

Danke !!!


Gruß
tbnwadm


EDIT: Die eine Zeile steht da natürlich nicht so fett und groß, da beißt sich wohl was mit der Administrator.de-Syntax...
Bitte warten ..
Mitglied: Goalie
16.05.2012 um 14:06 Uhr
Hallo tbnwadm,

ich denke, dass die Werte nicht korrekt aus der CSV-Datei ausgelesen werden.

Ungetestet könnte es etwa so funktionieren (der "New-ADUser"-Teil fehlt noch):

01.
Import-Csv .\users.csv -Delimiter ';' | ForEach-Object { New-ADUser ... }
Gruß

Goalie
Bitte warten ..
Mitglied: Festus94
16.05.2012 um 14:18 Uhr
Hi Goalie,

danke für die Hilfe.
Ich habe es gerade jedoch soweit, dass ich nun die Fehlermeldung erhalte, dass das Kennwort nicht den Anforderungen der Domäne entspricht. Die einzige Vorraussetzung ist jedoch eine Länge von fünf Zeichen und das erfülle ich ja. Ich kann mein Passwort aber ebenfalls nicht ändern, da dort ebenfalls eine solche Fehlermeldung kommt. Per CMD geht's (net user ...).

Woran kann das liegen ? Es sind nirgendwo Kenwort-Einschränkungen bis auf die Mindestlänge gesetzt. Der Rest ist abgestellt.

Danke !


tbnwadm
Bitte warten ..
Mitglied: Festus94
16.05.2012 um 17:49 Uhr
Okay, ich bin nun schon deutlich weiter:

New-ADUser -SamAccountName $_.SamAccountName -Name "$_.DisplayName" -Surname $_.Surname -GivenName $_.GivenName -DisplayName $_.DisplayName -Description $_.Description -AccountPassword (ConvertTo-SecureString "$_.AccountPassword" -AsPlainText –Force) -ChangePasswordAtLogon $true -Enabled $true -Path "OU=OU1,OU=OU2,DC=DOMÄNE,DC=local" -ProfilePath "\\SERVER\Profiles$\$_.Name"

Meine Fehlermeldung heißt so:

New-ADUser : Ein Wert für das Attribut befindet sich nicht im zulässigen Bereich

Habt Ihr eine Idee, was das noch sein kann ? Das Problem soll bei Zeichen 13 liegen, aber das macht keinen Sinn.


Grüße
tbnwadm
Bitte warten ..
Mitglied: mak-xxl
16.05.2012 um 18:03 Uhr
Moin tbnwadm,

Zitat von Festus94:
... Das Problem soll bei Zeichen 13 liegen, aber das macht keinen Sinn.

Doch, das ist schon eine sinnvoller Hinweis - bei Zeichen 13 beginnt der Parameter 'SamAccountName' - Du solltest den Inhalt von '$_.SamAccountName' mal ausgeben lassen und kontrollieren. Und bevor das nächste, ähnliche Problem auftaucht - am besten alle Variablen lokal ausgeben und kontrollieren (Leerzeichen?).

Einen schönen Feiertag wünscht mit freundlichen Grüßen von der Insel - Mario
Bitte warten ..
Mitglied: Festus94
16.05.2012 um 18:10 Uhr
Hi Mario,

die Ausgabe bringt mir "MMustermann" (ohne Anführungszeichen). Das ist auch richtig so. Ich habe auch $_.DisplayName ausprobiert, wo korrekt "Max Mustermann" rauskommt, dazu $_.Surname und $_.GivenName. Alles problemlos. Nur bei $_.DisplayName ist also ein Leerzeichen vorhanden.

Meine CSV:

GivenName;Surname;SamAccountName;AccountPassword;Description;DisplayName
Max;Mustermann;MMustermann;passwort;Test;"Max Mustermann"
Ellen;Bogen;EllenBogen;Pa$$w0rd;User;"Ellen Bogen"

Sehe ich den Wald vor lauter Bäumen nicht ?

Dir auch einen schönen Feiertag !

Viele Grüße
tbnwadm
Bitte warten ..
Mitglied: mak-xxl
16.05.2012 um 18:30 Uhr
Moin tbnwadm,

ich sehe auch nur Wald und keinen Fehler - überprüfe doch nochmals akribisch die einzelnen Attribute für die Parameter, so wie es lt. obigem Link sein soll. Und beachte doppelte Literale, wenn Du in der csv-Datei schon welche setzt - besser ausschließlich die Variable in solche ...

Viel Erfolg und freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: Festus94
16.05.2012 um 22:42 Uhr
Ich habe es jetzt nochmals geprüft und bin bei folgendem Ergebnis:

Import-Module ActiveDirectory

Import-CSV users.csv -Delimiter ";" | ForEach-Object{
New-ADUser -SamAccountName "$_.SamAccountName" -UserPrincipalName "$_.SamAccountName@SCHULADMIN.local" -Name "$_.DisplayName" -Surname "$_.Surname" -GivenName "$_.GivenName" -DisplayName "$_.DisplayName" -Description "$_.Description" -AccountPassword (ConvertTo-SecureString "$_.AccountPassword" -AsPlainText –Force) -ChangePasswordAtLogon $true -Enabled $true -Path "OU=Schüler,OU=Schule,DC=SCHULADMIN,DC=local" -ProfilePath "\\SRVDC\Profiles$\$_.SamAccountName"

Add-ADGroupMember -Identity $_.Typ -Members $_.SamAccountName
}

Meine CSV sieht so aus:

GivenName;Surname;DisplayName;SamAccountName;AccountPassword;Description
Maximilian;Mustermann;Maximilian Mustermann;MMustermann;passwort123;Schüler

Fehlermeldung:

New-ADUser : Der angegebene Name hat ein falsches Format für einen Kontennamen

Testweise habe ich schon -SamAccountName und -UserPrincipalName weggelassen, aber das hat nicht geholfen.


Viele Grüße
tbnwadm
Bitte warten ..
Mitglied: Festus94
01.06.2012 um 23:00 Uhr
Ich habe das Skript nun soweit, dass es wunderbar funktioniert.
Hier meine funktionierende Lösung:

Import-Module ActiveDirectory

Import-CSV users.csv -Delimiter ";" | ForEach-Object{
$sUPN = -join ($_.UserPrincipalName, "@", "<DOMÄNEN-NAME>")
$sPath = -join ("OU=", $_.Typ, ",OU=<OU>,DC=<DC-TEIL 1>,DC=<DC-TEIL 2>")
$sProfilePath = -join ("<FREIGABE-PFAD>", $_.SamAccountName)

New-ADUser -Name $_.DisplayName -SamAccountName $_.SamAccountName -UserPrincipalName $sUPN -Surname $_.Surname -GivenName $_.GivenName -DisplayName $_.DisplayName -Description $_.Description -AccountPassword (ConvertTo-SecureString $_.AccountPassword -AsPlainText –Force) -ChangePasswordAtLogon $true -Enabled $true -Path $sPath -ProfilePath $sProfilePath

$sIdentity = -join ("CN=", $_.Typ, ",OU=<OU>,DC=<DC-TEIL 1>,DC=<DC-TEIL 2>")

Add-ADGroupMember -Identity $sIdentity -Members $_.SamAccountName
}


Ich danke Euch für Eure Hilfe !



Viele Grüße
tbnwadm
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Printerport mit Powershell anlegen (12)

Frage von Druide83 zum Thema Batch & Shell ...

Batch & Shell
gelöst Recursiv Unterordner anlegen Powershell (2)

Frage von Voiper zum Thema Batch & Shell ...

Batch & Shell
Powershell - In Textdatei suchen und ersetzen (3)

Frage von Raaja89 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...