LDAP Remove from Group

Alle Fragen rund Antworten rund um die ACMP Client Commands und Container
René
Beiträge: 8
Registriert: Fr Mär 22, 2019 2:33 pm

Hi,

Ich würde gerne über ein LDAP command einen User aus einer AD Gruppe entfernen.

Leider scheint es kein delete attribute command zu geben sondern nur ein modify.

Auch hier gibt es nicht die Möglichkeit reinen LDAP Text abzusetzen so dass man z.b. Mittels delete: member einen User entfernen könnte.

Ist dies irgendwie „eleganter“ möglich als alles auszulesen, eine Person zu entfernen und alles wieder zu überschreiben?


Ich hatte auch schon gedacht das ganze lieber über PowerShell zu realisieren, allerdings wenn auf dem Client ausgeführt müsste dort ja das ad PowerShell Module installiert sein. Oder gibt es irgendwie die Möglichkeit variablen aus dem Client command an die console zu übergeben und den PowerShell Befehl über impersonation dort abzusetzen?

Hoffe immer noch es gibt hier eine elegantere Lösung.
Eisi
Beiträge: 49
Registriert: Mo Jan 16, 2017 9:59 pm

Hallo René,

der Hilfe zu "LDAP-Modify" ist folgendes zu entnehmen:

- Wenn Sie keinen Wert angeben wird der Wert des Attributes gelöscht.

Ab Windows 10 sind die AD cmdlets mit an Board und werden automatisch importiert.

Schöne Grüße aus Hamburg... Sven Biehl
René
Beiträge: 8
Registriert: Fr Mär 22, 2019 2:33 pm

Hi Sven,

Danke für die Antwort.
Habe ich schon gelesen aber das Problem ist, dass dann alle memberships gelöscht werden. Da dies ja ein multivalve Attribut ist.
Wenn genau in dem Moment ein Sync zu azure oder ähnliches stattfindet gibt es Probleme.

Wäre aber ein workaround diese vorher auszulesen und dann entsprechen wieder zu setzen.

Was Powershell angeht. Gibt es nicht die Möglichkeit clientvariablen an die console weiterzuleiten und dieses dann auf dem Server auszuführen?
Finde es irgendwie nur in die andere Richtung.

Gruß René
Eisi
Beiträge: 49
Registriert: Mo Jan 16, 2017 9:59 pm

Moin René,

leider habe ich mit diesem LDAP-Kram von ACMP noch nicht weiter gearbeitet, daher kann ich nichts weiter dazu sagen.

Alle Variablen, die Du mit "Projektvariable setzen" anlegst, können in den Scripten mit %Variablenname% abgefragt werden. Daher gibt es kein Feld, wo man explizit Variablen übergeben kann.

Schöne Grüße... Sven Biehl
René
Beiträge: 8
Registriert: Fr Mär 22, 2019 2:33 pm

Hi,

Ach cool, dann sollte es kein Problem sein.
Vielen Dank für den Tipp werde ich ausprobieren.
René
Beiträge: 8
Registriert: Fr Mär 22, 2019 2:33 pm

Hi,

Jetzt muss ich doch nochmal fragen da ich scheinbar das Konzept von console und clientcommand nicht richtig verstanden hatte:

Wenn ich einem Client ein command dauerhaft zuweise, sodass dieses im Clientvorrat auftaucht und dieses von dort aus ausgeführt wird, wo wird dann das console script ausgeführt?

Ich war immer der Meinung das console auf dem Server läuft, was ja nur bedingt stimmt.

Wenn also keine console im Spiel ist wo läuft dieses dann? Von dort wo es initial zugewiesen wurde? Oder ist das gar nicht möglich commands die consolenscripte enthalten so zuzuweisen?

Wie realisiert man sowas? Über sql und dann durch einen Trigger auf dem Server?

Grüße René
Benutzeravatar
ngottschalk
Beiträge: 293
Registriert: Mi Sep 08, 2010 12:57 pm

Hallo Rene,

Consolenskripte werden nur aufgerufen, wenn du ein Client Command über die Console an einen Client pushst; Wenn ein Client auf eine andere Art ein Client Command startet (Container, Command Launcher, (W)RunCC.exe, Rollout), das ein Consolenskript enthält, wird nur das Clientskript ausgeführt, daher immer zu Beginn des Clientskripts sicherstellen, dass wichtige Variablen in diesem Fall vorbefüllt sind.
Je nachdem, was du erreichen möchtest, würde man dies wahrscheinlich über Custom Fields lösen; Dann werden Werte erst in einer Console definiert (entweder über ein/das Client Command oder direkt in den Client Details) und im Clientskript bei der Ausführung dann vom Server geladen.
Mit freundlichen Grüßen

Niklas Gottschalk (gottschalk@zoller-usa.com)
IT Systems Administrator
Zoller Inc.
René
Beiträge: 8
Registriert: Fr Mär 22, 2019 2:33 pm

Hi und Danke für die Antwort.

Ich möchte eigentlich Variablen vom Client befüllen lassen und dann ein Script mit diesen Parametern auf dem Server ausführen.

In diesem speziellen Fall eben z.B. AD Gruppenmitgliedschaften wo ich im clientcommand eigentlich nur den User Abfragen möchte und eben das antriggern.

Ich habe immer im Kopf, dass aus Security Sicht das Script was die Mitgliedschaft verwaltet nicht auf dem Client laufen sollte, da man ja dort den User mit den entsprechenden Rechten mitsendet.
Benutzeravatar
ngottschalk
Beiträge: 293
Registriert: Mi Sep 08, 2010 12:57 pm

Hallo Rene,

das sollte einfacher sein, als du denkst (wenn ich dich richtig verstanden habe), da der zuletzt angemeldete Benutzer vom ACMP ausgelesen werden sollte und daher als Wert auf dem Server zur Verfügung steht (ansonsten ein CC auf den Clients lassen, das den gewünschten Wert in einem Custom Field speichert). In diesem Fall würde es reichen, per SQL eine Liste der ClientIds auf dem Server zu generieren und diese zu iterieren, um an die Werte zu kommen, ein Beispiel hänge ich an (der Username könnte direkt über SQL mitgeholt werden, das würde die Performance noch verbessern). Einfach auf dem Server laufen lassen und in der Schleife die gewünschten Aktionen durchführen lassen=)
Dateianhänge
Beispiel__{8F58086C-9C15-4578-9C0F-1B7E08E2F608}.sim
(4.63 KiB) 148-mal heruntergeladen
Mit freundlichen Grüßen

Niklas Gottschalk (gottschalk@zoller-usa.com)
IT Systems Administrator
Zoller Inc.
René
Beiträge: 8
Registriert: Fr Mär 22, 2019 2:33 pm

Hi Niklas,

Anscheinend habe ich mich nicht ganz richtig ausgedrückt.

Ich möchte gerne eine Self Service Oberfläche erstellen wo der Benutzer die Möglichkeit hat eigenständig einer AD Gruppe beizutreten oder diese zu verlassen.

Ich würde jetzt so vorgehen:
- Ein Client Command basteln mit einer Oberfläche wo der Anwender auswählen kann beitreten/verlassen.
- Dann das Ganze auf den SQL Server schreiben.
- Und von einem weiteren Server (erstmal egal ob ACMP oder ein anderer) prüfen ob Einträge in SQL vorhanden sind und diese dann dementsprechend abarbeiten indem die Gruppen entsprechend geändert werden.

Ist das so das korrekte vorgehen? Oder gibt es da einen einfacheren Weg?
Antworten