Multi Value Attribute lassen sich mit PowerShell beschreiben.
Mit dem üblichen Verfahren werden bestehende Inhalte gelöscht.
Kleine Änderungen an der Skriptzeile sind die Lösung.
In einem aktuellen Projekt möchten wir ein CustomAttribute zur Steuerung der Migration nutzen.
Die verschiedenen Migrationsphasen werden als Werte in einem Multi Value Attribute gespeichert und Triggern verschiedene Prozesse in Abhängigkeit der Werte. Bei einer AD Migration kann es mehr als hilfreich sein, wenn PowerShell und Multi Value Attributes sinnvoll zusammen arbeiten.
Index
Alle Werte des Multi Value Attributes gelöscht
Wenn man allerdings ein Multi Value Attribute mit den üblichen Verfahren beschreibt, so werden alle bereits existierenden Inhalte gelöscht.
Diese Zeile schreibt den Wert „phase1“ in das Attribut msExchExtensionCustomAttribute1:
1 |
Set-QADUser -SamAccountName $account -objectAttributes @{msExchExtensionCustomAttribute1=@('phase1')} |
Dieses Beispiel überschreibt alle Inhalte, „phase1“ wird durch „phase2“ ersetzt:
1 |
Set-QADUser -SamAccountName $account -objectAttributes @{msExchExtensionCustomAttribute1=@('phase2')} |
Problemlos Werte hinzufügen und entfernen
Mit einer kleinen Änderung in der Skriptzeile kann man jedoch auch leicht erreichen, dass Werte hinzugefügt oder auch einzelne Werte entfernt werden:
@{Append
Fügt einen oder mehrere Werte hinzu
@{Delete
Löscht einen oder mehrere Werte
@{Clear
Löscht alle Werte
@{Update
Löscht alle Werte und schreibt neue Werte
Die folgende Ziele fügt zu einem existierenden Wert den Wert „phase2“ hinzu
1 |
Set-QADUser -SamAccountName $account -objectAttributes @{msExchExtensionCustomAttribute1=@{<strong>Append</strong>=@('phase2')}} |
Mit etwas PowerShell Geschick kann man auch Werte basierend auf Suchkriterien löschen:
Das Beipiel sucht nach Werten die „New“ enthalten und achtet dabei nicht auf die Groß/Kleinschreibung. (newvalue, NewValue, etc.)
1 2 3 4 5 6 7 8 9 10 |
$src=Get-QADUser -SamAccountName $account -IncludeAllProperties $prop2del = "<strong>New</strong>" foreach($prop in $src.msExchExtensionCustomAttribute1) { $prop if($prop.ToLower().Contains($prop2del.ToLower())) { $result=Set-QADUser $account -objectAttributes @{msExchExtensionCustomAttribute1=@{<strong>Delete</strong>=@($prop)}} } } |
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>