AD User Attribute anpassen aus einer CSV Datei?
Hallo zusammen
Ich habe von der HR Abteilung eine CSV Datei bekommen mit folgenden Infos:
PSN;Vorname;Name;Abteilung
125;Hans;Muster;Administration
Nun möchte ich die CSV auslesen und die Abteilung des Benutzers mit der Info aus der CSV Datei ändern.
Und dies für jeden Benutzer der in der CSV Datei hinterleg ist.
Einfach zu Info. Bei jedem AD User ist im Attribut (extensionAttribute1) die PSN hiterlegt und könnte dort als Identifier abgefragt werden und dann die jeweilige Abteilung für diesen Benutzer ändern.
Was ich bis jetzt schon probiert habe, wäre folgendes (Leider ohne Erfolg)
Import-Module ActiveDirectory
$Attribcsv=Import-csv "C:\My\Daten\Attribute.csv"
ForEach ($User in $Attribcsv){
Get-ADUser -Identity ($User.PSN) | set-ADUser -Department $($User.department)
}
Könnte Ihr mir hierzu evtl. weiterhelfen?
Besten Dank
1 Antwort
Get-ADUser -Identity ($User.PSN)
Da ist der Fehler.
Die Identity wäre der Common - oder Distinguished Name. Du hast aber nur die PSN.
Es müsste daher in etwa so aussehen
Get-AdUser -Filter "'extensionAttribute1' -eq `'$($User.PSN)`' "
War klar das ich den Filter nicht beim ersten Mal vom Handy hinbekomme 😉
-Filter 'extensionAttribute1 -eq $($User.PSN)'
Leider noch nicht:
Import-Module ActiveDirectory
$Attribcsv=Import-csv "C:\My\Daten\Attribute.csv"
ForEach ($User in $Attribcsv)
{
Get-AdUser -Filter 'extensionAttribute1 -eq $($User.PSN)' | set-ADUser -Department $($User.department)
}
Fehler:
Get-AdUser : Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "path" ungültig ist. Ändern Sie den Wert des Arguments "path", und führen Sie den Vorgang erneut aus.
In Zeile:7 Zeichen:1
+ Get-AdUser -Filter 'extensionAttribute1 -eq $($User.PSN)' | set-ADUse ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-ADUser], PSArgumentException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:System.Management.Automation.PSArgumentException,Microsoft.ActiveDirectory.Management.Commands.GetADUser
Wahrscheinlich kann er mit "$($User.PSN)" nicht umgehen.
Mach eine Zeile davor ein
$UserPSN = $User.PSN
und referenziere dann diese Variable.
Dasselbe solltest du dann auch für die Variable im Set-Aduser machen
Ich habe das mal so probiert und bekomme diese Fehlermeldung:
Import-Module ActiveDirectory
$Attribcsv=Import-csv "C:\My\Daten\Attribute.csv"
ForEach ($User in $Attribcsv){
Get-AdUser -Filter "'extensionAttribute1' -eq `'$($User.PSN)`' " | set-ADUser -Department $($User.department)
}
Fehler:
Get-AdUser : Fehler beim Analysieren der Abfrage: "'extensionAttribute1' -eq '' " Fehlermeldung: "syntax error" an folgender Position: "1".
In Zeile:4 Zeichen:1
+ Get-AdUser -Filter "'extensionAttribute1' -eq `'$($User.PSN)`' " | se ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Get-ADUser], ADFilterParsingException
+ FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADUser