AD User Anhand einer CSV Datei erstellen und pflegen
Guten Tag,
ich bin noch recht ein Anfänger mit Powersell und bräuchte Hilfe, da ich einfach nicht schaffe, bei Usern, welche vorher ÜÖÄ im Namen hatten zu erfassen und ihre Einträge zu ändern.
Der Script soll drei Sachen machen.
User über eine CSV Datei erstellen, wenn diese vorhanden sind, dann deren Einträge anpassen(Telefonnummer, Position, Titel, Straße etc) und wenn Sie noch Umlaute im Namen haben die dann beim erstellen umwandeln, da ansonsten Email und Domainlogin Umlaute im Namen haben.
Wenn ich den Code ausführe und die User schon existieren, dann bekomme ich folgende Fehlermeldung:
Ich habe schon einige Sachen versucht, was man an den verweisten Funktion sieht. Aber ich komme nicht dahinter, was falsch ist. Vielleicht wird auch mir die falsche Stelle als fehlerhaft angezeigt?
ich bin noch recht ein Anfänger mit Powersell und bräuchte Hilfe, da ich einfach nicht schaffe, bei Usern, welche vorher ÜÖÄ im Namen hatten zu erfassen und ihre Einträge zu ändern.
Der Script soll drei Sachen machen.
User über eine CSV Datei erstellen, wenn diese vorhanden sind, dann deren Einträge anpassen(Telefonnummer, Position, Titel, Straße etc) und wenn Sie noch Umlaute im Namen haben die dann beim erstellen umwandeln, da ansonsten Email und Domainlogin Umlaute im Namen haben.
Import-Module ActiveDirectory
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;
$Import =Import-CSV “c:\temp\User.csv” -Delimiter ";" -Encoding:UTF8
$OU = “OU=Firma,OU=Testuser,DC=zero,DC=int”
Foreach ($user in $Import)
{
function Convert-Umlaut
{
param
(
[Parameter(Mandatory)]
$Text
)
$output = $Text.Replace('ö','oe').Replace('ä','ae').Replace('ü','ue').Replace('ß','ss').Replace('Ö','Oe').Replace('Ü','Ue').Replace('Ä','Ae')
$isCapitalLetter = $Text -ceq $Text.toUpper()
if ($isCapitalLetter)
{
$output = $output.toUpper()
}
$output
}
$VNkurz = Convert-Umlaut $user.Vorname
$NNkurz = Convert-Umlaut $user.Nachname
$kurz = ($NNkurz + $user.Domainname)
#Überprüft, ob User schon existiert
if (Get-ADUser -Filter { SamAccountName -eq $kurz})
{
Set-ADUser -identity ($user.Nachname + $user.Domainname)`
-Department $user.Position`
-Title $user.Titel `
-Description $user.Visitenkarte`
-Company $user.Firma `
-StreetAddress $user.Straße `
-PostalCode $user.PLZ`
-City $user.Ort`
-MobilePhone $user.Mobil`
-OfficePhone $user.Phone`
-HomePage $user.Website`
}
else
{
$password = $user.password | ConvertTo-SecureString -AsPlainText -Force
New-ADUser -Name ($user.Nachname + " " + $user.Vorname) `
-GivenName $user.Vorname `
-Surname $user.Nachname `
-UserPrincipalName ($NNkurz + $user.Domainname + $user.UPN) `
-sAMAccountName ($NNkurz + $user.Domainname) `
-Department $user.Position`
-Title $user.Titel `
-Description $user.Visitenkarte`
-Company $user.Firma `
-StreetAddress $user.Straße `
-PostalCode $user.PLZ`
-City $user.Ort`
-MobilePhone $user.Mobil`
-OfficePhone $user.Phone`
-HomePage $user.Website`
-Path $OU -AccountPassword $Password -ChangePasswordAtLogon $True -Enabled $True
#Mailbox anlegen
Get-User ($NNkurz + $user.Domainname + $user.UPN) | Enable-Mailbox -Alias ($VNkurz + "." + $NNkurz) -DisplayName ($user.Nachname +" "+ $user.Vorname)
}
}
Wenn ich den Code ausführe und die User schon existieren, dann bekomme ich folgende Fehlermeldung:
Set-ADUser : replace
In C:\temp\Test4.ps1:33 Zeichen:2
+ Set-ADUser -identity ($user.Nachname + $user.Domainname)`
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (ZimmermannM:ADUser) [Set-ADUser], ADInvalidOperationException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.SetADUser
Ich habe schon einige Sachen versucht, was man an den verweisten Funktion sieht. Aber ich komme nicht dahinter, was falsch ist. Vielleicht wird auch mir die falsche Stelle als fehlerhaft angezeigt?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 507687
Url: https://administrator.de/forum/ad-user-anhand-einer-csv-datei-erstellen-und-pflegen-507687.html
Ausgedruckt am: 03.04.2025 um 21:04 Uhr
2 Kommentare
Neuester Kommentar
Moin,
habs nur überflogen und bin nicht ganz sicher was du erreichen möchtest.
der -identity Parameter definiert ja den User den du ändern möchtest. "identity" an sich wird dadurch natürlich nicht neu gesetzt.
Es könnte auch ein problem mit der Verknüpfung der 2 Eigenschaften sein $user.Nachname + $user.Domainname eventuell kommt dabei etwas heraus was die Function nicht als identity verwenden kann.
da du aber vorher in der Bedingung den samaccountname überprüfst nimm doch den als identity:
Set-ADUser -identity $kurz`
Grüße
habs nur überflogen und bin nicht ganz sicher was du erreichen möchtest.
der -identity Parameter definiert ja den User den du ändern möchtest. "identity" an sich wird dadurch natürlich nicht neu gesetzt.
Es könnte auch ein problem mit der Verknüpfung der 2 Eigenschaften sein $user.Nachname + $user.Domainname eventuell kommt dabei etwas heraus was die Function nicht als identity verwenden kann.
da du aber vorher in der Bedingung den samaccountname überprüfst nimm doch den als identity:
Set-ADUser -identity $kurz`
Grüße