Objekte im Organisations-Verzeichnis verwalten

Im vorangegangenen Abschnitt haben Sie gelernt, sich im emdb-PowerShell-Laufwerk wie im Dateisystem zu bewegen und sich Objekte anzeigen und filtern zu lassen. Damit können Sie sicherlich bereits eine ganze Menge an Informationen über den aktuellen Zustand Ihrer DSM 2022.2 Umgebung ermitteln. Sie haben bisher jedoch noch ausschließlich lesend auf die Inhalte der EMDB zugegriffen und noch keinerlei neue Objekte erzeugt oder Manipulationen an bestehenden Objekten vorgenommen. Dies wollen wir in diesem Abschnitt nun ändern.


Zunächst werden Sie lernen, Objekte im Organisations-Verzeichnis anzulegen, zu ändern und zu löschen. Dies ist mit großer Wahrscheinlichkeit auch im produktiven Einsatz der meistgenutzte Anwendungsfall der PowerShell Extensions for Ivanti DSM, da im Bereich des sogenannten ORG-Directories (oder ODS) erfahrungsgemäß die höchste Änderungsfrequenz auftritt. Sie müssen neue Organisationseinheiten anlegen oder bestehende löschen, neue Computer einfügen oder importieren, Sie müssen bestehende Computer verschieben, reinstallieren oder löschen, neue Gruppen anlegen oder bestehende Gruppenmitgliedschaften verändern etc.


Wechseln Sie nun zunächst in das Basisverzeichnis "Managed Users & Computers" des ORG-Directories, wenn Sie sich dort aktuell nicht befinden. Sie können dies einfach durch Ausführen des folgenden Befehls erreichen:


cd "emdb:\rootDSE\Managed Users & Computers"


Organisationseinheiten und Computer-Objekte anlegen

Im nächsten Schritt wollen wir nun eine neue Organisationseinheit "Rom" anlegen. Die einfachste Möglichkeit hierzu besteht in dem Befehl


New-EmdbOrganizationalUnit "Rom"


Tipp: Im Kontext des Organisations-Verzeichnisses entspricht das Cmdlet New-EmdbOrganizationalUnit dem Befehl mkdir, sodass Sie in diesem Beispiel auch kürzer mkdir "Rom" hätten schreiben können. 


Wechseln Sie nun in die neue Organisationseinheit über


cd "Rom"


Nun wollen wir in dieser OU einen neuen Computer "XP99" anlegen. Hierfür verwenden Sie das Cmdlet New-EmdbComputer


New-EmdbComputer "XP99"


Wechseln Sie nun in die DSMC und kontrollieren Sie, dass sowohl die Organisationseinheit, als auch der Computer angelegt wurden. Beachten Sie, dass der Computer inaktiv erscheint (es sei denn, Sie hätten bereits die Einstellungen für die initiale Computeraktivierung geändert). 


Da es sich bei dem Computer XP99 um ein Notebook handelt, soll dies auch in DSM 2022.2 so eingestellt werden. Außerdem wollen wir, um den Computer später wieder besser finden zu können, die Beschreibung auf "Verwaltet über PowerShell" setzen. Wechseln Sie hierzu zurück in Ihr PowerShell-Konsolenfenster und geben folgende Befehle ein:


$MyComputer = Get-EmdbComputer "XP99"

$MyComputer.ComputerType = "Laptop"

$MyComputer.Description = "Verwaltet über PowerShell"

$MyComputer.Update()


Wie Sie sehen, werden Änderungen an Eigenschaften nicht sofort und automatisch aktiv, sondern Sie müssen dies durch Aufrufen der Update()-Methode erst in die DSMDB "zurückschreiben".


Dagegen werden die Methoden der Objekte direkt ausgeführt, wie folgendes Beispiel beweist, mit dem wir für den Computer nun die Betriebsart "Aktiv" setzen.


$MyComputer.Activate()


Tipp: Statt die Activate()-Methode aufzurufen, können Sie für ein Computer-Objekt auch den Wert der Eigenschaft OperationMode setzen. Als Wert können Sie dabei auch den Klartext, wie er in der DSMC dargestellt wird, eintragen. Beispielsweise versetzt der Befehl $MyComputer.OperationMode = "Für Neuinstallation vorbereiten" und der anschließende Aufruf der Update()-Methode den Computer in den erwarteten Zustand.  


Gruppen-Objekte anlegen und verwalten

Als nächstes wollen wir in der aktuellen Organisationseinheit eine neue statische Computergruppe anlegen. Hierzu verwenden wir das Cmdlet New-EmdbGroup, dem wir die erforderlichen Parameter, nämlich den Namen der anzulegenden Gruppe (der Parameter -Name kann dabei weggelassen werden) und die Kategorie der Gruppenelemente, übergeben:


New-EmdbGroup "Laptops Rom" -TargetCategory "Computer"


Verifizieren Sie in der DSMC, dass die Gruppe angelegt wurde. Nun soll der Computer XP99 zum Mitglied der soeben erstellten Gruppe gemacht werden. Hierzu kann das Cmdlet Add-EmdbGroupmember verwendet werden. Es erwartet eine bzw. mehrere Gruppen und ein oder mehrere Objekte eines Typs, der als Mitglied in den Gruppen zugelassen ist, als Eingabeparameter. Der Beispielaufruf sieht wie folgt aus:


$MyGroup = Get-EmdbGroup "Laptops Rom"

Add-EmdbGroupMember -Group $MyGroup -Member $MyComputer


Objekte können mit einem Aufruf dieses Cmdlets zu Mitgliedern in mehreren Gruppen gemacht werden. Der Computer XP99 soll nun zu einem Mitglied der Gruppe "Laptops Rom" und der (noch zu erzeugenden) Gruppe "Laptops Berlin" werden:


$grpList = @("Laptops Rom", "Laptops Berlin")

Add-EmdbGroupMember -Group $grpList -Member $MyComputer


Alternativ können Gruppenmitgliedschaften durch Aufruf der Operation AddMember() des Gruppenobjekts erzeugt werden. Das als Gruppenmitglied hinzuzufügende Computer-Objekt wird als Parameter übergeben.


$MyGroup = Get-EmdbGroup "Laptops Rom"

$MyGroup.AddMember($MyComputer)


Da es sich um eine Methode handelt, werden die Änderungen sofort wirksam. Kontrollieren Sie die Gruppenmitgliedschaften der Gruppe daher nun in der DSMC.


Um herauszufinden, welche Mitglieds-Objekte eine Gruppe enthält, kann das Cmdlet Get-EmdbGroupmember verwendet werden. Es muss dazu mit dem Namen der Gruppe bzw. mit einem Objekt vom Typ "Gruppe" parametrisiert werden:


Get-EmdbGroupMember -Group "Laptops Rom"


Um die Mitglieds-Objekte einer Menge von Gruppen mit einem Aufruf des Cmdlets zu erfragen, kann eine Liste mit Gruppennamen an das Cmdlet übergeben werden:

 

$grpList = @("Laptops Rom", "Laptops Berlin")

Get-EmdbGroupMember -Group $grpList


 Alternativ lassen sich Gruppenmitglieder über die Operation GetMembers() an einem Objekt vom Typ "Gruppe" erfragen:


$MyGroup.GetMembers()


Gruppenmitglieder aus statischen Gruppen entfernen erfolgt mit dem Cmdlet Remove-EmdbGroupMember:


Remove-EmdbGroupMembership -Group $MyGroup -Member $MyComputer)


Auch dieses Cmdlet unterstützt Gruppen- bzw. Objektlisten als Eingabeparameter. Alternativ lassen sich Gruppenmitgliedschaften durch Aufruf der Operation RemoveMember() am Gruppenobjekt aufheben, wie das folgende Beispiel zeigt:


$MyGroup.RemoveMember($MyComputer)


Um eine dynamische Gruppe zu erzeugen, müssen dem New-EmdbGroup-Cmdlet zwei zusätzliche Parameter übergeben werden: -Dynamic für die Kennzeichnung der zu erzeugenden Gruppe als dynamische Gruppe und -Filter mit dem der LDAP-Filter für die Gruppe angegeben wird


New-EmdbGroup "Laptops" -TargetCategory "Computer" -Dynamic -Filter "Computer.ComputerType=Laptop"


Tipp: Weitere Informationen zu Filterkriterien erhalten Sie im Kapitel Mit Filtern arbeiten.


Schließlich ist in vielen DSM 2022.2 Umgebungen der Import von Active Directory-Gruppen ein häufig durchzuführender Task, da es durchaus gängig ist, Software-Zuweisungen auf externe Gruppen, beispielsweise aus dem Active Directory, vorzunehmen. Diese Gruppen können auch über die PowerShell Extensions for Ivanti DSM in die DSM 2022.2 Umgebung importiert werden, allerdings ist es dazu erforderlich, die SID der Gruppe zu kennen. 


Ermitteln Sie also zunächst mit folgenden Befehlen die SID der gewünschten Active Directory-Gruppe


$MyADGroup = New-Object System.Security.Principal.NTAccount("Adobe Reader 9.0 Group")

$MySID = $MyADGroup.Translate([System.Security.Principal.SecurityIdentifier]).ToString()


und importieren Sie die Gruppe anschließend in DSM 2022.2 über den Befehl


New-EmdbExternalGroup "Adobe Reader 9.0 Group" -UniqueID $MySID -IDProvider "AD"


Hinweis: Die obigen Befehle können natürlich nur dann erfolgreich ausgeführt werden, wenn in Ihrem Active Directory eine Gruppe namens "Adobe Reader 9.0 Group" existiert.


Wie Sie sehen, müssen Sie beim Anlegen beziehungsweise Importieren einer externen Gruppe neben der eindeutigen ID, den Namen der Gruppe und den sogenannten ID-Provider angeben, der für Active Directory-Gruppen stets auf den Wert "AD" gesetzt werden muss. Beim Namen der Gruppe können Sie einen beliebigen gültigen Namen angeben, wobei jedoch dringend empfohlen wird, denselben Namen zu verwenden unter dem die Gruppe im Active Directory angelegt ist.