bananenkoenig
Goto Top

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.


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?

Content-Key: 507687

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

Printed on: April 19, 2024 at 07:04 o'clock

Member: Bitboy
Bitboy Oct 23, 2019 at 08:36:16 (UTC)
Goto Top
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
Member: Bananenkoenig
Bananenkoenig Oct 23, 2019 updated at 09:43:05 (UTC)
Goto Top
Zitat von @Bitboy:
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.
Set-ADUser -identity $kurz`

Das habe ich mir auch schon gedacht und es damit versucht, aber dann bekomme ich folgende Fehlermeldung:
Set-ADUser : Unter "DC=Zero,DC=int" kann kein Objekt mit der ID "ZimmermannM" gefunden werden.  
In C:\temp\Test4.ps1:33 Zeichen:2
+  Set-ADUser -identity $kurz`
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (ZimmermannM:ADUser) [Set-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException,Microsoft.ActiveDirectory.Management.Commands.SetADUser
Gebe ich das manuell ein, wenn er dort stehen bleibt, wird auch der User erkannt und ich kann die Einträge nachpflegen.

Das Problem mit Set-ADUser -identity ($user.Nachname + $user.Domainname)` ist erst entstanden, nachdem ich die Umlaut Funktion eingebaut habe und versuche sie anzuwenden. Davor wurden dann einfach die bestehenden Einträge geändert. Aber mein Wissen ist nicht tief genug, um selber das Problem alleine zu umgehen.