spsman
Goto Top

Powershell ADUser Objekteigenschaft bearbeiten

Hallo,

ich habe folgendes Script welches ein AD-User-Objekt Ausliest und mittels CSV die Eigenschaften verändern soll.
Leider sagt mir die Fehler Meldung so gar nichts und die Letzte Ausgabe scheint ein Hinweis auf den Fehler zu sein.
Script:
#Import CSV mit geänderten eigenschaften
$CSVData =  Import-Csv "C:\Infos.csv" -Delimiter ';'  
# Eigenschaftsnamen auslesen
$CSVHead = $CSVData|Get-Member -MemberType "Noteproperty"  
#Durchlaufe die Zeilen
foreach ($User in $CSVData){
   #Filterstring erstellen
   $filter= "DisplayName -eq '"+$User.DisplayName+"'"  
   #AD Userobjekt holen
   $ADUser = Get-ADUser -Filter $filter -Properties *
   $ADUser.DisplayName #Name zur Kontrolle anzeigen lassen
  #Spalten durchlaufen und Eigenschaften Verändern
   foreach ($Property in $CSVHead){
            $Name=$Property.Name
            $ADUser."$Name" = $CSVData."$Name" # FEHLER  
            Write-Output $Name":   "$ADUser."$Name" #Kontrollausgabe  
            }
   $ADUser.EmailAddress #Konrolle ob Eigenschaft verändert wurde.
}

#Hier kommt an ende die Set-ADUser anweisung hin

Ausgabe:
Ausnahme beim Festlegen von "EmailAddress": "Der Adapter kann den Wert der EmailAddress-Eigenschaft nicht festlegen."
In C:\AD_Einlesen.ps1:9 Zeichen:13
'+ $ADUser."$Name" = $CSVData."$Name"
'+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'+ CategoryInfo : NotSpecified: (face-smile , SetValueInvocationException
'+ FullyQualifiedErrorId : CatchFromBaseAdapterSetValue

EmailAddress: CN=Hans Wurst,CN=Users,DC=TestDom,DC=local.EmailAddress

PS C:\>


Hab Ihr eine Idee wie ich ohne Mehrfache SEt-Anweisung das Objekt verändern kann?

Content-Key: 1486049062

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

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: ArnoNymous
ArnoNymous 09.11.2021 um 10:47:49 Uhr
Goto Top
Moin

Zitat von @SPSman:



EmailAddress: CN=Hans Wurst,CN=Users,DC=TestDom,DC=local.EmailAddress


sollte hier nicht ein OU=Users stehen?

Gruß
Mitglied: emeriks
emeriks 09.11.2021 um 12:03:23 Uhr
Goto Top
Zitat von @ArnoNymous:
sollte hier nicht ein OU=Users stehen?
Nein. "Users" ist keine Organisationseinheit sondern nur ein Container. Container haben "CN" als Komponente.
Mitglied: ArnoNymous
ArnoNymous 09.11.2021 um 12:05:33 Uhr
Goto Top
Zitat von @emeriks:

Zitat von @ArnoNymous:
sollte hier nicht ein OU=Users stehen?
Nein. "Users" ist keine Organisationseinheit sondern nur ein Container. Container haben "CN" als Komponente.

Stimmt. Danke für den Hinweis.
Mitglied: erikro
erikro 09.11.2021 um 22:00:27 Uhr
Goto Top
Moin,

lies mal das durch. Dann kommst du sicher drauf. face-wink

hth

Erik
Mitglied: Underachiever
Lösung Underachiever 12.11.2021 um 00:00:43 Uhr
Goto Top
Hi.

So sollte es funktionieren:
#Import CSV mit geänderten eigenschaften
$CSVData =  Import-Csv "C:\Infos.csv" -Delimiter ';'  
# Eigenschaftsnamen auslesen
$CSVHead = $CSVData|Get-Member -MemberType "Noteproperty"  
#Durchlaufe die Zeilen
foreach ($User in $CSVData){
   #Filterstring erstellen
   $filter= "DisplayName -eq '"+$User.DisplayName+"'"  
   #AD Userobjekt holen
   $ADUser = Get-ADUser -Filter $filter -Properties *
   $ADUser.DisplayName #Name zur Kontrolle anzeigen lassen
   #Spalten durchlaufen und Eigenschaften Verändern
   $parameter = $null
   foreach ($Property in $CSVHead){
            $parameter += @{$Property.Name = $CSVData.$Property.Name}
            }
  Set-Aduser $ADUser @parameter
}