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:
Ausgabe:
Hab Ihr eine Idee wie ich ohne Mehrfache SEt-Anweisung das Objekt verändern kann?
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: ( , SetValueInvocationException
'+ FullyQualifiedErrorId : CatchFromBaseAdapterSetValue
EmailAddress: CN=Hans Wurst,CN=Users,DC=TestDom,DC=local.EmailAddress
PS C:\>
In C:\AD_Einlesen.ps1:9 Zeichen:13
'+ $ADUser."$Name" = $CSVData."$Name"
'+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'+ CategoryInfo : NotSpecified: ( , 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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1486049062
Url: https://administrator.de/contentid/1486049062
Ausgedruckt am: 25.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
Moin
sollte hier nicht ein OU=Users stehen?
Gruß
sollte hier nicht ein OU=Users stehen?
Gruß
Zitat von @ArnoNymous:
sollte hier nicht ein OU=Users stehen?
Nein. "Users" ist keine Organisationseinheit sondern nur ein Container. Container haben "CN" als Komponente.Zitat von @emeriks:
Zitat von @ArnoNymous:
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.
Hi.
So sollte es funktionieren:
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
}