none
Problem beim Scripten einer GPO für Restricted Groups RRS feed

  • 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

    Mittwoch, 2. September 2015 06:48

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

    Mittwoch, 2. September 2015 06:50
  • 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.

    Mittwoch, 2. September 2015 07:04
  • 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 zu
    bleiben, oder auch AD Attribute im Item Level Targeting der GPPs nutzen.
     
    Warum Powershell? Weil du es "üben" möchtest?
     
     
     
    > Machine\Microsoft\WindowsNT\Secedit\GptTmpl.inf
     
    Weiterer 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 deine
    Clients überhaupt mitbekommen, das es etwas "Neues" gibt.
    Eine kleine Rettung ist zufälligerweise für dich das Verhalten der CSE
    Security, 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, wo
    ich 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 Powershell
    erstellen und füllen, wenn du unbedingt scripten möchtest.
     
    Tschö
    Mark
    --
    Mark Heitbrink - MVP Windows Server - Group Policy
     
    GPO Tool: http://www.reg2xml.com - Registry Export File Converter
     
    Mittwoch, 2. September 2015 07:16
  • 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

    Mittwoch, 2. September 2015 09:06
  • 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.

    Mittwoch, 2. September 2015 09:41
  • 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 GPO
    mit 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 im
    SYSVOL (gpt.ini) und einmal im AD (Attribut "version"), aber lass das
    bitte 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 Links
    gelesen 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 oder
     
    Den Standort, den PC, die "xxx-wahtever" kannst du per GPP Environment
    an 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 zu
    fü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 Policy
     
    GPO Tool: http://www.reg2xml.com - Registry Export File Converter
     
    Mittwoch, 2. September 2015 09:45
  • 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 

    Mittwoch, 2. September 2015 09:53
  • 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/

    Mittwoch, 2. September 2015 10:49
  • 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

    Mittwoch, 2. September 2015 10:54
  • 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/

    Mittwoch, 2. September 2015 11:13
  • Vielen Dank Norbert, auf sowas kann ich aber verzichten.

    Ich suche einfach eine Methode um die Version zu ändern, kann das nicht einfach jemand kurz erklären???

    Mittwoch, 2. September 2015 11:28
  • 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/

    Mittwoch, 2. September 2015 11:51
  • Ja, besser wenn du weg bleibst, denn wie gesagt ich kann auf dich und deine Antworten verzichten.

    Ich suche eine Methode um die Version zu ändern, nicht mehr und nicht weniger. Kann bitte mal jemand normal antworten? 

    Mittwoch, 2. September 2015 11:55
  • Wenn die Ideen so viel besser sind sollten sie vielleicht einmal genauer beschrieben werden, dass man das nachvollziehen kann wenn man sich noch keine 234732 STunden damit beschäftigen konnte und kann. 


    Mittwoch, 2. September 2015 11:57
  • 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/

    Mittwoch, 2. September 2015 12:08
  • habs selbst hinbekommen.

    vielen dank für eure hilfe...NICHT

    funktioniert übrigens 1a

    Mittwoch, 2. September 2015 13:48
  • 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 Objekt
    gespeichert.
     
    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 in
    HEX, das kennen wir aus der Registry.
    Die ersten 4 Stellen sind der Zähler für den Benutzer, die letzten 4
    zä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 = 65537
     
    Aber noch mal aus der Praxis:
    Bei deinem AD kommen "x-hundert" Einzeleinträge zusammen. Dein Script
    kann das händeln, aber JEDER!! deiner Clients muss JEDESMAL die
    komplette Liste aller Einträge importieren.
    Ich habe bei einem Kunden mit 30 Einträgen angefangen und keiner hat es
    in der Performance gemerkt, jetzt sind wir jenseits 400 und es kostet ca
    7 Sekunden beim Start.
     
    7 Sekunden hört sich nicht nach viel an, ist es aber, denn die Kisten
    haben SSDs und wären eigentlich in 15 Sekunden komplett gebootet, wenn
    die Regel nicht wäre.
     
    Ein letzter Versuch:
    Was bietet dir meine Lösung? High Performance, da nur eine Regel für
    1000 Computer, darin letztlich eine LDAP Abfrage. Wir reden hier über
    Millisekunden.
    Kontrolle und Zuordnung komplett per Script, aber NICHT JEDESMAL vom
    Client ausgeführt, sondern nur einmalig pro Eintrag am DC und da wird
    nur die Gruppe erzeugt und ein User eingetragen.
     
    Irgendwo muss eine Liste erstellt werden, die verwaltet wird, aber es
    ist ein Unterschied ob 1000 Clients alle 16 Stunden ein Liste
    vollständig verarbeiten, oder ob man eine Liste nur hat, um sie zu
    pflegen. (ob manuell oder gescriptet ist Wurscht)
     
    Tschö
    Mark
    --
    Mark Heitbrink - MVP Windows Server - Group Policy
     
    GPO Tool: http://www.reg2xml.com - Registry Export File Converter
     
    Mittwoch, 2. September 2015 14:56
  • 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

    Mittwoch, 2. September 2015 16:25
  • > \\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 (-:
    Dienstag, 15. September 2015 10:27