PowerShell und Shift + Ins, oder wie Sie Hermes bei der Arbeit mit GPP beschleunigen

Published on August 07, 2018

PowerShell und Shift + Ins, oder wie Sie Hermes bei der Arbeit mit GPP beschleunigen


    Die Zwischenablage und PowerShell werden beschleunigt, aber nicht blind.


    Die Verwendung von GPP zum Hinzufügen von Registrierungsdateien ist unheimlich und unpraktisch - all diese Registrierungszweige, Schlüsseltypen, Werte ... Insbesondere, wenn Zweige und Werte hübsch sind. Es gibt jedoch einige Lifehacks, die die Arbeit mit Gruppenrichtlinien erheblich beschleunigen können.


    Sie können natürlich ein Anmeldeskript mit dem Befehl hängen, um den Registrierungszweig zu importieren. Dies ist jedoch nicht unsere Methode.


    Methode eins. Etwas kompliziert


    Die erste Möglichkeit besteht darin, eine eigene GPO-Vorlage zu erstellen. Diese Methode ist besonders nützlich, wenn Sie die Parameter von Werten je nach Benutzer ändern müssen. Wenn Sie nicht die Prinzipien der Bildung von Vorlagen lernen möchten, können Sie einfach exportieren die „richtige» reg-Datei und wandelt es in eine Vorlagendatei ein Skript mit REG_2_ADMXL.vbs , ausgestellt in der Galerie Technet - Skript.


    Angenommen, wir möchten den Benutzern das Leben erleichtern, indem Sie mehrere Suchmaschinen wie folgt in den Internet Explorer einbinden:


    • Wenn Sie in die Adressleiste " g Abfragetext" eingeben , wird die Abfrage bei Google gesucht.
    • Y request text” - in Yandex;
    • und " w request text" ist in der russischen Wikipedia.

    Bereiten Sie dazu einfach die Registrierungsdatei vor:


    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl\W]
    @="http://ru.wikipedia.org/wiki/Служебная:Search?search=%s"
    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl\Y]
    @="http://www.yandex.ru/yandsearch?rpt=rad&text=%s"
    [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchUrl\G]
    @="http://www.google.com/search?q=%s"

    Konvertieren Sie es mit dem folgenden Befehl in eine Vorlage:


    cscript REG_2_ADMXL.vbs IE-search.reg Ru-ru IE-search.admx

    Die resultierende Vorlage und der Ordner mit der Sprachdatei werden in das Verzeichnis mit den Vorlagen abgelegt. Jetzt wird unsere Richtlinie im GPO-Verwaltungs-Snap-In angezeigt.



    Installierte Vorlage.


    Der Mechanismus ist nicht sehr wartungsfreundlich, funktioniert aber im Prinzip. Und fahren Sie nichts manuell.


    Eine weitere Option wäre die Verwendung von PowerShell-Cmdlets für die Arbeit mit Gruppenrichtlinienobjekten. Um beispielsweise das Kontextmenüelement "Senden" wiederherzustellen, lauten die Cmdlets wie folgt:


    Import-module -Name GroupPolicy
    New-GPO -Name SendTo
    Set-GPRegistryValue -Name "SendTo" -key "Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" -ValueName SendTo -Type ExpandString -value "C:\Users\Default\AppData\Roaming\Microsoft\Windows\SendTo"
    Set-GPLink -Name SendTo -Target "ou=Users,dc=domain,dc=com" -LinkEnabled Yes

    Dies ist die Option für nur einen Schlüssel. Wenn viele Schlüssel vorhanden sind, müssen Sie das Rad der Einfachheit halber neu erfinden und die Registrierungsdatei erneut in eine Reihe von PowerShell-Cmdlets konvertieren.


    Weitere Informationen zum Arbeiten mit Gruppenrichtlinien und zum Automatisieren all dieser Vorgänge finden Sie in einem der vorherigen Artikel, " Eintauchen in Vorlagen und Zähmen von Windows-Gruppenrichtlinienobjekten ". Nun, ich erzähle Ihnen von meinem Lieblingsweg.


    Der zweite Weg. Kopieren - Einfügen (fast)


    Wie Sie vielleicht bemerkt haben (das habe ich nicht sofort bemerkt), sind im Gruppenrichtlinienverwaltungs-Snap-In Aktionen für Objekte verfügbar, einschließlich der Standardvorgänge in der Zwischenablage.



    Kontextmenü in den GPP-Registrierungseinstellungen.


    Wenn Sie ein Objekt in die Zwischenablage kopieren und einfügen, stellt sich heraus, dass es sich bei diesem Objekt um eine Datei im XML-Format handelt. Dies bedeutet, dass die Datei vorgeformt und dem Snap-In hinzugefügt werden kann, ohne dass die Felder manuell ausgefüllt werden müssen.


    Dafür hat Malcolm McCaffery ein spezielles Drehbuch geschrieben. Es generiert eine XML-Datei basierend auf der exportierten Registrierungsdatei. Das Skript kann im Blog des Autors entnommen werden .


    Im Skript hat der Autor zusätzliche Aufrufe der Funktion Convert-Reg2Xml und einen zusätzlichen Parameterblock. Diese Fehler können während eines Testlaufs mit PowerShell ISE leicht behoben werden. Trotzdem habe ich für alle Fälle die korrigierte Version auf Pastebin geworfen . Es gibt auch einen Fork dieses Skripts auf Github und sogar einen Onlinedienst , der dasselbe tut.

    Die Verwendung des Skripts ist äußerst einfach.


    Convert-Reg2Xml -regPath input.reg -xmlPath output.xml

    Die resultierende XML-Datei kann sogar für Registrierungseinstellungen in die Box gezogen werden.


    Betrachten wir ein konkretes Beispiel. Zunächst exportieren wir den "richtigen" Registrierungszweig. In diesem Beispiel erstellen wir eine Richtlinie, um die Anzeige von versteckten Dateien, Ordnern und Erweiterungen zu ermöglichen. Gleichzeitig führen wir ctfmon.exe automatisch aus, um das Layout reibungslos zu ändern.


    Die Registrierungsdatei lautet wie folgt:


    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
    "Hidden"=dword:00000001
    "HideFileExt"=dword:00000000
    "ShowSuperHidden"=dword:00000001
    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
    "Language Bar"=""ctfmon”=”CTFMON.EXE”

    Konvertiere es in xml. Wenn Sie sich die resultierende Datei ansehen, sieht sie bereits so aus:


    Vollständige XML-Auflistung unter Spoiler.
    <?xml version="1.0" encoding="utf-8"?>
    <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="HKEY_CURRENT_USER">
      <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Software">
        <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Microsoft">
          <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Windows">
            <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="CurrentVersion">
              <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Explorer">
                <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Advanced">
                  <Registry clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}" name="Hidden" descr="Imported Reg File" image="17">
                    <Properties action="U" hive="HKEY_CURRENT_USER" key="Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" name="Hidden" default="0" type="REG_DWORD" displayDecimal="0" value="00000001" />
                  </Registry>
                  <Registry clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}" name="HideFileExt" descr="Imported Reg File" image="17">
                    <Properties action="U" hive="HKEY_CURRENT_USER" key="Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" name="HideFileExt" default="0" type="REG_DWORD" displayDecimal="0" value="00000000" />
                  </Registry>
                  <Registry clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}" name="ShowSuperHidden" descr="Imported Reg File" image="17">
                    <Properties action="U" hive="HKEY_CURRENT_USER" key="Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" name="ShowSuperHidden" default="0" type="REG_DWORD" displayDecimal="0" value="00000001" />
                  </Registry>
                </Collection>
              </Collection>
              <Collection clsid="{53B533F5-224C-47e3-B01B-CA3B3F3FF4BF}" name="Run">
                <Registry clsid="{9CD4B2F4-923D-47f5-A062-E897DD1DAD50}" name="Language Bar" descr="Imported Reg File" image="7">
                  <Properties action="U" hive="HKEY_CURRENT_USER" key="Software\Microsoft\Windows\CurrentVersion\Run" name="Language Bar" default="0" type="REG_SZ" displayDecimal="0" value=""ctfmon”=”CTFMON.EXE”" />
                </Registry>
              </Collection>
            </Collection>
          </Collection>
        </Collection>
      </Collection>
    </Collection>

    Jetzt können Sie es einfach in die Registrierungseinstellungen einfügen. Solche Schönheit wird sich herausstellen:



    Kundenspezifische Richtlinien.


    Bei entsprechender Sachkenntnis dauert der Vorgang kürzer als das Lesen dieses Textes.


    Für zusätzlichen Komfort können Sie im Kontextmenü ein Element für Registrierungsdateien hinzufügen, um Dateien im Allgemeinen mit zwei Klicks zu konvertieren.


    Es reicht aus, einen neuen Aktionstyp für Objekte des Typs regfile zu erstellen und den Pfad zum gewünschten Skript festzulegen . Der Einfachheit halber habe ich es natürlich in die Registrierungsdatei geschrieben:


    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Software\Classes\regfile\shell\convert2xml]
    @="convert2xml"
    [HKEY_CURRENT_USER\Software\Classes\regfile\shell\convert2xml\command]
    @="powershell.exe -File C:\\temp\\script.ps1 %1"

    Der Skriptpfad wird in der letzten Zeile festgelegt.


    Damit das Skript dies ausführen kann, müssen Sie die folgenden Zeilen hinzufügen:


    $output=(Split-Path -Path $args[0]) + "\output.xml"
    Convert-Reg2Xml -regPath $args[0] -xmlPath $output

    Wenn Sie nun das Kontextmenü aufrufen, wird ein weiteres Element angezeigt. Wenn Sie darauf klicken, wird die von uns benötigte XML-Datei neben der Registrierungsdatei angezeigt.



    Neuer Kontextmenüpunkt.


    Natürlich sind solche Mechanismen überflüssig, um einfache Änderungen an der Registrierung von Benutzern und Computern vorzunehmen. Zum Einstellen einer großen Anzahl von Parametern sind diese Life-Hacks jedoch sehr praktisch.