Eigenschaft durch Variable ersetzten
Moin Zusammen,
ich möchte zwei AD User Konten synchronisieren. Dies möchte ich möglichst mit einer Forech-Schleife realisieren.
Leider tuts nicht so wie erwartet. Wenn ich versuche eine Eigenschaft -Company durch eine Variable zu ersetzten die auch -Company enthällt erhalte ich einen Fehler:
set-aduser -Identity $UserOrg -server $IT_Server -Company $IT_Attr funktioniert hingegen.
Die $Attribute Variable wird später mit weiteren Werten gefüllt.
Für Hilfe wäre ich euch dankbar.
Vielen Dank!
ich möchte zwei AD User Konten synchronisieren. Dies möchte ich möglichst mit einer Forech-Schleife realisieren.
Leider tuts nicht so wie erwartet. Wenn ich versuche eine Eigenschaft -Company durch eine Variable zu ersetzten die auch -Company enthällt erhalte ich einen Fehler:
$UsersCSV = Import-Csv -path C:\Users\Administrator\Desktop\user.csv -Delimiter ";"
foreach ( $User in $UsersCSV) {
$UserOrg = $user.orgid
$attribute = "company"
ForEach ($attr in $attribute) {
$IT_Attr = get-Aduser $user.SamAccountName -Properties * | Select-Object -ExpandProperty $attr
set-aduser -Identity $UserOrg -server $IT_Server **-$attr** $IT_Attr
}
}
Fehler:
Set-ADUser : Es wurde kein Positionsparameter gefunden, der das Argument "-company" akzeptiert.
In C:\Users\Administrator\Desktop\syncAccounts.ps1:25 Zeichen:9
set-aduser -Identity $UserOrg -server $IT_Server -Company $IT_Attr funktioniert hingegen.
Die $Attribute Variable wird später mit weiteren Werten gefüllt.
Für Hilfe wäre ich euch dankbar.
Vielen Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 372333
Url: https://administrator.de/contentid/372333
Ausgedruckt am: 13.11.2024 um 06:11 Uhr
4 Kommentare
Neuester Kommentar
Hi,
PowerShell ist kein Batch, wo man zur Laufzeit die Befehle generieren kann.
Versuche es statt dessen mit
E.
set-aduser -Identity $UserOrg -server $IT_Server -Company $IT_Attr funktioniert hingegen.
Hier ist "-Company" ein Switch.set-aduser -Identity $UserOrg -server $IT_Server -$attr $IT_Attr
Und hier wird es zu einem Parameter.PowerShell ist kein Batch, wo man zur Laufzeit die Befehle generieren kann.
Versuche es statt dessen mit
Set-ADUser -Identity $UserOrg -server $IT_Server -Replace @{$attr=$IT_Attr}
E.
Bei -Replace ist Bedingung das der Wert nicht NULL ist!!
Wenn eine Eigenschaft leer ist nutzt man -Clear.
Einfach mal die Doku lesen
https://docs.microsoft.com/en-us/powershell/module/addsadministration/se ...
Wenn eine Eigenschaft leer ist nutzt man -Clear.
Einfach mal die Doku lesen
https://docs.microsoft.com/en-us/powershell/module/addsadministration/se ...
Das geht damit auch wenn an das wollte und zwar lassen sich Befehlsketten mit Invoke-Expression ausführen, Beispiel.:
$param = "-class Win32_Computersystem"
iex "Get-WMIObject $param"