Fragensteller
Problem beim Scripten einer GPO für Restricted Groups

Allgemeine Diskussion
-
Hallo liebe Community,
habe nun schon einige Tage in sämtlichen Foren gelesen, bislang aber ohne Erfolg, daher dachte ich mal, dass ich mich einfach anmelde und mal direkt meine Frage stelle.
Ich versuche derzeit über ein PowerShell-Script lokale Admin-Rechte innerhalb meines Netzwerkes über Restricted Groups zu verteilen. Wie ich das selbst "per Hand" umsetzen kann, ist mir bewusst, doch beim Script habe ich noch (mindestens) ein Problem. Zunächst möchte ich erstmal meine Entwicklungsumgebung erläutern:
Ich habe ein Netzwerk bestehend aus 4 Rechnern:
1) Der Active-Directory Server (Windows Server 2008R2)
2) Der Server, der meine Applikation ausführt (Windows Server 2008R2)
3) 1. Client (Windows 7, 64bit)
4) 2. Client (Windows 7, 64bit)
Innerhalb des Active-Directory habe ich 3 User angelegt, user1, user2 und user3. Per Hand war es mir bereits möglich, z.B. nur user1 auf Client 2 Admin-Rechte zu ermöglichen. Dabei bin ich per Hand folgende Schritte durchgegangen:
1) Ich lege eine neue OU an, z.B. mit dem Namen: Client1_LA
2) Ich verschiebe das Computerobjekt von Client 1 in diese OU
3) Ich erstelle eine Globale-Sicherheitsgruppe, z.B. mit dem Namen localadmin_Client1
4) Ich gehe in die Gruppenrichtlinienverwaltung (sorry, hab alles auf Deutsch :D) und erstelle eine neue GPO innerhalb der eben erstellten OU
5) In dieser GPO gehe ich unter Computerkonfiguration/Richtlinien/Windows-EInstellungen/Sicherheitseinstellungen/Eingeschränkte Gruppen und füge die Gruppe localadmin_Client1 hinzu
6) Die Gruppe localadmin_Client1 wird nun Mitglied der Gruppe Administratoren
Soweit so gut, das funktioniert auch alles sehr gut. Nun kommen wir zu meinem Script, welches dies nachbilden soll:
Dafür nutze ich das Active-Directory und das GroupPolicy Modul. Für die eben beschriebenen Schritte 1-4 treten keine Probleme auf, das Active-Directory Modul löst dies sehr sauber. Auch das erstellen der GPO stellt keine Schwierigkeiten dar, erst wenn es an die "Bearbeitung" geht, stößt mein Script auf Schwierigkeiten.
Da ich keine passende Funktion innerhalb des GroupPolicy-Moduls finden konnte, mit der ich diese Einstellungen tätigen konnte, habe ich durch langes googlen herausgefunden, dass man diese Gruppenzugehörigkeit innerhalb der Restricted Groups einfach im Explorer in einer Datei editieren kann.
%logonserver%\sysvol\domänenname\Polices
Dort befinden sich alle GPOs, nun gehen wir in die von unserem Script erstellte und navigieren weiter zu:
Machine\Microsoft\WindowsNT\Secedit\GptTmpl.inf
Auch diese Datei konnte ich erfolgreich editieren (bzw. mein Script bildet sie nach, natürlich mit der entsprechenden ID der neuen Gruppe).
Auch die bestehenden Verzeichnisse (welche leer sind), die erstellt werden, wenn man diese Einstellung in den Restricted Groups per Hand tätigt, baut das Script nach. An sich sieht also alles absolut identisch aus und an sich ist kein Unterscheid mehr erkennbar, ob das Script oder ein User per Hand solch eine GPO erstellt oder editiert hat (einzige Unterschiede sind wie gesagt nur SID der Gruppe innerhalb der gpttmpl).
Jedoch wird die erscriptete GPO nicht umgesetzt! (gpforce /update, lange Zeit warten, restarts usw. alles ausprobiert)
Sehr wahrscheinlich liegt das Problem an der Computerversion der GPO. Auch durch googlen habe ich herausgefunden, dass bei der Computerversion zwei gleiche Zahlen für AD und Sysvol auftreten müssen, damit die GPO überhaupt umgesetzt wird. Bei der von Hand erstellten GPO sieht das so aus:
Computerversion: 2 (AD), 2 (Sysvol)
bei der gescripteten:
Computerversion: 0 (AD), 2 (Sysvol)
Ich vermute sehr stark, dass das die Ursache für mein Problem ist. Bestätigen kann ich diese Annahme daruch, dass ich auf dem betreffenden Clienten ein logging aktiviert habe und ich dort folgende Zeile finde:
GPO GPO_LA_CLient1 doesn't contain any data since the version number is 0. It will be skipped.
Soweit so gut, ich nehme also an, dass das AD die Änderungen, die mein Script innerhalb des Verzeichnisses tätigt, nicht realisert um so die Versionsnummer zu aktualisieren. Jedoch finde ich keine Lösung, wie ich nun entweder diese Versionsnummer eigens per Hand korrigieren kann.
Bisherige Versuche waren:
GPO in der registry des AD-Servers zu finden => erfolglos, sowohl die per Hand erstellte, als auch die gescriptete sind nicht aufzufinden. Jedoch sind die beiden Standard-GPOs zu finden.
Ich hoffe das reicht zunächst als Beschreibung meines Problems, ansonsten kann ich natürlich Screenshots von sämtlichen Problemen bereitstellen oder mich ggf. genauer ausdrücken. Tut mir leid für den langen Post :D
Ich hoffe jemand von euch kann mir helfen, da ich bestimmt nicht der erste bin, der auf dieses Problem stößt :D
Grüße,
Max
- Typ geändert Mihaela ParedesMicrosoft contingent staff, Moderator Montag, 14. September 2015 14:11
Alle Antworten
-
Hallo Leute,
ich bins nochmal :D
Eine kleine Ergänzung nochmal:
Wenn ich beim Client auf Computer-> Verwalten gehe und mir die Gruppen anzeigen lasse, finde ich nicht die localadmin_Client1 Gruppe. Sobald ich diese jedoch per Hand hinzufüge, klappt auch alles wie gewollt, jedoch ist das ja keine sehr schöne Lösung..
Also irgendwo funktioniert die GPO mit den Restricted Groups, aber eben nicht richtig und vollautomatisch.
Grüße,
Max
-
Hi Max,
das Problem hatte ich auch schon, ich habe mich aber noch nicht wirklich damit auseinandergesetzt.
Was ich mich aber frage, ist: warum willst Du eine in den GPO bereits vorhandene Funktion umständlich per Skript umsetzen? Steckt da irgendwas dahinter?
Gruß
Ben
MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)
Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)
Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können. -
Hi,Am 02.09.2015 um 08:48 schrieb klex92:> Ich versuche derzeit über ein PowerShell-Script lokale Admin-Rechte> innerhalb meines Netzwerkes über Restricted Groups zu verteilen.Warum?Du kannst %computername%-Admins in der GPO verwenden um flexible zubleiben, oder auch AD Attribute im Item Level Targeting der GPPs nutzen.Warum Powershell? Weil du es "üben" möchtest?> Machine\Microsoft\WindowsNT\Secedit\GptTmpl.infWeiterer Nachteil deiner Technik:Du schreibst Daten direkt in die Datei. ohne den Counter (die Version)der GPO zu erhöhen. Das müsstest du auch noch machen, damit deineClients überhaupt mitbekommen, das es etwas "Neues" gibt.Eine kleine Rettung ist zufälligerweise für dich das Verhalten der CSESecurity, die alle 16 Stunden läuft, ohne rücksicht auf die Version.> Computerversion: 0 (AD), 2 (Sysvol)Sag ich ja. Das Attribut "version" der GPO ist nicht weitergezählt.Aber abb, von all dem halte ich deinen Weg für zu umstädnlich, für das,was du erreichen möchtest. Es gibt in deinem Vorgehen keinen Ansatz, woich das Scripting aufgrund der felxibilität präferieren würde.Bau eine GPO mit einer Regel in den GPP, denn die laufen immer,unabhängig von der Version alle 90 Minuten und bei jedem Start.%computername%-Admins hinzufügen -> fertig.Die AD Gruppe %computername%-Admins kannst du pro PC per Powershellerstellen und füllen, wenn du unbedingt scripten möchtest.TschöMark--Mark Heitbrink - MVP Windows Server - Group PolicyHomepage: http://www.gruppenrichtlinien.de - deutschGPO Tool: http://www.reg2xml.com - Registry Export File Converter
-
Hallo,
erstmal vielen Dank für eure Antworten.
Um eure Fragen zu beantworten, möchte ich mein Szenario vllt. noch etwas genauer darstellen:
Firmennetzwerk, mit ca 2.000 Usern und 1.000 Rechnern, lokale Admin-Rechte MÜSSEN zwangsläufig per Script verteilt werden, ansonsten ist der Aufwand viel zu hoch, denn Rechte müssen ggf. kurzzeitig nur vergeben/entzogen werden.
Das Script legt also alles neu an, die OU, Gruppe und die GPO. Lediglich die Einstellungen der GPO werden "umständlich" in den Dateien bearbeitet, da ich keine andere Möglichkeit gefunden habe.
Wie kann ich denn die Version vom AD hochzählen lassen? Denn genau das wäre vermutlich die Lösung meines Problems.
Und zu der letzten Antwort: Ich kann nicht an jeden Rechner gehen und einen Admin-Account eintragen, zudem manche Rechner garnicht physisch am Standort sind. Auch das wäre ein viel zu großer Aufwand und vorallem viel zu unübersichtlich um es nachvollziehen zu können.
Also am hilfreichsten wäre es zunächst, zu erfahren, wie man diese Computerversion 0 (AD) in diesem Fall auf 2 hochzählen lässt.
Freue mich auf eure Antworten,
Max
-
Hi Max,
auch dafür kannst Du Gruppenrichtlinien verwenden - ob Du die Änderung nun im Skript oder per GPO abbilden lässt, Du musst immer manuell was ändern. Bei der GPO kannst Du das Gruppenrichtlinienupdate aber auch (sofern Du als DC 2012 hast) remote auslösen: in der GPO-Konsole Rechtsklick auf die OU, "Gruppenrichtlinienupdate" und schon hast Du die Änderungen auf den gewünschten Systemen drauf.
Gruß
Ben
MCSA Windows 8 (.1) MCSA Windows Server 2012 (R2)
Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)
Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können. -
Hi,Am 02.09.2015 um 11:06 schrieb klex92:> Firmennetzwerk, mit ca 2.000 Usern und 1.000 Rechnern, lokale> Admin-Rechte MÜSSEN zwangsläufig per Script verteilt werden, ansonsten> ist der Aufwand viel zu hoch, denn Rechte müssen ggf. kurzzeitig nur> vergeben/entzogen werden.Dann scripte eine Domänen Gruppe, wie gesagt und nutze eine einzige GPOmit einem einzigen Eintrag der für alle trifft.Done.Die GPO kannst du sogar auf Domänen-Ebene verlinken. Was wir passieren?%computername%-Admins wird vom Computer mit seinem eigenen Namenübersetzt, zB "PC123456", er sucht jetzt selbstständig anhand seiner%logondomain% nach der AD Gruppe "PC123456-Admins".a) es gibt sie, sie wird zu den lokalen Admins hinzugefügt.b) es gibt sie nicht, nichts passiert.> Wie kann ich denn die Version vom AD hochzählen lassen?Jede GPO (siehe GUID der Richtlinie) hat 2 Versioneinträge. Einmal imSYSVOL (gpt.ini) und einmal im AD (Attribut "version"), aber lass dasbitte sein. Das ist Murks.> Und zu der letzten Antwort: Ich kann nicht an jeden Rechner gehen und> einen Admin-Account eintragen,Du hast das Ding mit der Gruppenrichtlinie verstanden? Du hast die Linksgelesen und drüber nachgedacht?Du bist schon fertig. Du musst nur noch Gruppen erstellen, pro PC eine,für eine 1zu1 Zuordnung oder eine Pauschale pro Standort, oder oder oderDen Standort, den PC, die "xxx-wahtever" kannst du per GPP Environmentan alle PCs als Variable verteilen, oder dynmisch per ILT erzeugen.%computername% wird schon von alleine aufgelöst. Für "%Standortname%"musst du erst eine erstellen, evtl. gibt es diese schon aus dem Deployment.Jetzt brauchst du nur noch ein Script, um die Gruppe mit Usern zufüllen. Keine Version, Kein Stress, nur eine Stelle, einfach nur"members"-Attribut der Gruppe schreiben.Du machst es dir gerade viel zu aufwendig.TschöMark--Mark Heitbrink - MVP Windows Server - Group PolicyHomepage: http://www.gruppenrichtlinien.de - deutschGPO Tool: http://www.reg2xml.com - Registry Export File Converter
-
Hi Ben, Hi Mark,
zunächst zu Bens Antwort: Diese Funktion habe ich hier leider nicht :/
an Mark: Ich will zunächst versuchen meine Idee umzusetzen und dafür (siehe erster Beitrag) suche ich eine Lösung um die Versionsnummer im AD zu ändern. Dein letzter Beitrag zielt ja schon mal in diese Richtung, nur finde ich keine GPOs im AD, sondern nur in der Gruppenrichtlinienverwaltung. Wenn du mir nun erklären könntest, wie genau ich diese Versionsnummer im AD von der jeweiligen GPO ändern kann, wäre das zunächst am hilfreichsten.
Vielen Dank für eure Antworten,
Grüße
Max
-
Am 02.09.2015 schrieb klex92:
Hi,
> an Mark: Ich will zunächst versuchen meine Idee umzusetzen und dafür (siehe erster Beitrag) suche ich eine Lösung um die Versionsnummer im AD zu ändern.Achso, du willst eigentlich keine sinnvolle Lösung, sondern deine Idee umsetzen. Sag das doch gleich. ;)
Bye
Norbert
Dilbert's words of wisdom #19:
Am I getting smart with you? How would you know?
nntp-bridge Zugriff auf die MS Foren wieder möglich: https://communitybridge.codeplex.com/ -
Hi,
ja ich habe mein Problem geschildert und auch meinen Lösungsweg skizziert. Mehrfach habe ich nun gefragt, wie man die Version des AD ändert/aktualisiert.
Ich würde gerne auf meine Frage eine Antwort bekommen und nicht tausend neue Vorschläge und andere Lösungswege. Ich will einfach erfahren, wie man diese Versionsnummer ändern kann. Wenn schon eine alternative Lösung, dann auch eine genau beschriebene. Zwei Stichwörter in den Raum werfen hilft mir da nicht, denn ich werde nicht die ganze Arbeit, die ich bereits investiert habe, umwerfen aufgrund von zwei Stichwörtern in einem Forum.
Also entweder eine gescheite alternative Lösung genau beschreiben (worauf wahrscheinlich keiner Bock hat, was ich auch verstehen kann)
ODER meine Frage einfach beantworten.
Danke
Max
-
Am 02.09.2015 schrieb klex92:
Hi,ODER meine Frage einfach beantworten.
Aha. Viel Erfolg. :)
Bye
Norbert
Dilbert's words of wisdom #34:
When you don't know what to do, walk fast and look worried.
nntp-bridge Zugriff auf die MS Foren wieder möglich: https://communitybridge.codeplex.com/ -
Am 02.09.2015 schrieb klex92:
Hi,Vielen Dank Norbert, auf sowas kann ich aber verzichten.
Ja wie auf vieles wie mir scheint.
Ich suche einfach eine Methode um die Version zu ändern, kann das nicht einfach jemand kurz erklären???
Du bekommst also Hinweise, dass das keine gute Idee ist wenn man nicht genau weiß, was man tut, und dann soll dir auch noch jemand dabei helfen dir ins Knie zu schießen? Vielleicht arbeitest du dich in GPOs ein und stellst dann fest, dass die gegebenen Hinweise doch besser sind als deine Idee, in die du jetzt schon viel "Aufwand" gesteckt hast.
Jeder wie er mag.
Bin dann mal weg.
Bye
Norbert
Dilbert's words of wisdom #34:
When you don't know what to do, walk fast and look worried.
nntp-bridge Zugriff auf die MS Foren wieder möglich: https://communitybridge.codeplex.com/ -
Am 02.09.2015 schrieb klex92:
Ja, besser wenn du weg bleibst, denn wie gesagt ich kann auf dich und deine Antworten verzichten.
Ja aber nur, weil du sie nicht verstehen willst. ;)
Ich suche eine Methode um die Version zu ändern, nicht mehr und nicht weniger. Kann bitte mal jemand normal antworten?
Hat Mark dir geschrieben. Suchen kannst du sicher allein, wenn du schon nicht wahrhaben willst, dass dein Weg aufwändiger und fehleranfälliger ist.
Bye
Norbert
Frank, I never thought I'd say this again. I'm getting the pig!
nntp-bridge Zugriff auf die MS Foren wieder möglich: https://communitybridge.codeplex.com/ -
Hi,Am 02.09.2015 um 11:53 schrieb klex92:> Dein letzter Beitrag zielt ja schon mal in diese Richtung,> nur finde ich keine GPOs im AD, sondern nur in der> Gruppenrichtlinienverwaltung.Short Track:- jede GPO hat ein GPC (Container) und ein GPT (Template)ersteres ist im AD, zweiteres im SYSVOL.Pfad GPT:\\deine.dom\sysvol\dein.dom\policies\{GUID der GPO}darin die gpt.ini, die für die Versionierung im SYSVOL zuständig ist.Ab Windows XP ist dieser Versionseintrag im SYSVOL für das Objekt(Computer/User) irrelvant und es entscheidet nicht mehr über die GPOÜbernahme.Pfad GPC:cn={GUID er GPO},cn=policies,cn=system,dc=deine,dc=dom-> Attribut "version".Diese wird als Version auf dem Client im HKCU, bzw. HKLM je nach Objektgespeichert.Wie zählt man die Version? Einfach "plus 1"? Nein/Jein... das klappt nur für Computerobjekte. Warum?Die Version (in GPT und GPC) sind 32Bit Dwords, geteilt auf 8 Stellen inHEX, das kennen wir aus der Registry.Die ersten 4 Stellen sind der Zähler für den Benutzer, die letzten 4zählen die Computerversion.0001 0001 wäre in der GPMC:Benutzer AD (1) Sysvol (1)Computer AD (1) Sysvol (1)aber dezimal im "version" Eintrag = 65537Aber noch mal aus der Praxis:Bei deinem AD kommen "x-hundert" Einzeleinträge zusammen. Dein Scriptkann das händeln, aber JEDER!! deiner Clients muss JEDESMAL diekomplette Liste aller Einträge importieren.Ich habe bei einem Kunden mit 30 Einträgen angefangen und keiner hat esin der Performance gemerkt, jetzt sind wir jenseits 400 und es kostet ca7 Sekunden beim Start.7 Sekunden hört sich nicht nach viel an, ist es aber, denn die Kistenhaben SSDs und wären eigentlich in 15 Sekunden komplett gebootet, wenndie Regel nicht wäre.Ein letzter Versuch:Was bietet dir meine Lösung? High Performance, da nur eine Regel für1000 Computer, darin letztlich eine LDAP Abfrage. Wir reden hier überMillisekunden.Kontrolle und Zuordnung komplett per Script, aber NICHT JEDESMAL vomClient ausgeführt, sondern nur einmalig pro Eintrag am DC und da wirdnur die Gruppe erzeugt und ein User eingetragen.Irgendwo muss eine Liste erstellt werden, die verwaltet wird, aber esist ein Unterschied ob 1000 Clients alle 16 Stunden ein Listevollständig verarbeiten, oder ob man eine Liste nur hat, um sie zupflegen. (ob manuell oder gescriptet ist Wurscht)TschöMark--Mark Heitbrink - MVP Windows Server - Group PolicyHomepage: http://www.gruppenrichtlinien.de - deutschGPO Tool: http://www.reg2xml.com - Registry Export File Converter
-
Am 02.09.2015 schrieb klex92:
Dein letzter Beitrag zielt ja schon mal in diese Richtung, nur finde ich keine GPOs im AD, sondern nur in der Gruppenrichtlinienverwaltung.
GPO = Group Policy Object (Englisch)
Gruppenrichtlinien (Deutsch) = GPO. Ist es jetzt klarer?
Servus
Winfried
Gruppenrichtlinien
HowTos zum WSUS Package Publisher
WSUS Package Publisher
HowTos zum Local Update Publisher
NNTP-Bridge für MS-Foren -
> \\deine.dom\sysvol\dein.dom\policies\{GUID der GPO}> darin die gpt.ini, die für die Versionierung im SYSVOL zuständig ist.> Ab Windows XP ist dieser Versionseintrag im SYSVOL für das Objekt> (Computer/User) irrelvant und es entscheidet nicht mehr über die GPO> Übernahme....klitzekleiner Nachtrag: Identisch mit der Version im AD muß er sein,sonst wird die GPO nicht angewendet...
Greetings/Grüße, Martin
Mal ein gutes Buch über GPOs lesen?
Good or bad GPOs? - my blog…
And if IT bothers me - coke bottle design refreshment (-: