Uruchamianie skryptów PowerShell przy użyciu GPO

Zasady grup okien pozwalają na uruchamianie różnych plików skryptów, gdy komputer uruchamia się / wyłącza, a użytkownik loguje się / wylogowuje. Korzystając z obiektu zasad grupy, można wykonywać nie tylko klasyczne pliki skryptów (.bat, .cmd ,, vbs) na komputerach domeny, ale także skrypty PowerShell (.ps1), a także uruchamianie / zamykanie / logowanie / wylogowywanie

W nowoczesnych systemach operacyjnych (Windows 10 / Windows Server 2016) można skonfigurować uruchamianie skryptów logowania / logowania w programie PowerShell bezpośrednio z edytora GPO.

W wersjach wcześniejszych niż Windows 7 i Windows Server 2008 R2 nie można było bezpośrednio uruchamiać plików PowerShell z obiektu zasad grupy (trzeba było wywoływać pliki ps1 z plików nietoperzy jako parametr do pliku wykonywalnego powershell.exe).

Uruchom konsolę zarządzania zasadami domeny - GPMC.msc (Konsola zarządzania zasadami grupy), utwórz nową zasadę i przypisz ją do żądanego kontenera z użytkownikami lub komputerami (możesz użyć filtrów GPO WMI, aby lepiej dostosować zasady). Przejdź do trybu edycji zasad.

Musisz wybrać sekcję GPO, aby uruchomić skrypt PowerShell, w zależności od tego, kiedy chcesz uruchomić skrypt.

  • Jeśli skrypt PS powinien zostać uruchomiony, gdy użytkownik loguje się do komputera (ustawiając parametry środowiska użytkownika, programy, na przykład: po zalogowaniu użytkownika automatycznie tworzysz podpis w Outlooku na podstawie danych od użytkownika AD, konfigurujesz wygaszacz ekranu lub ustawienia ekranu startowego) lub gdy użytkownik się wylogowuje , musisz przejść do sekcji GPO: Użytkownik Konfiguracja -> Zasady -> Windows Ustawienia -> Skrypty (Zaloguj się / Wyloguj się);
  • Jeśli chcesz uruchomić skrypt PowerShell podczas uruchamiania komputera (wyłączanie przestarzałych protokołów: NetBIOS, SMBv1, konfigurowanie ustawień zabezpieczeń komputera itp.) Lub przed prawidłowym wyłączeniem komputera, musisz przejść do sekcji GPO z ustawieniami komputera: Konfiguracja komputera -> Zasady -> Ustawienia systemu Windows -> Skrypty (uruchamianie / zamykanie).

Uruchamianie skryptu PowerShell przy uruchamianiu komputera przy użyciu zasad grupy

Powiedzmy, że musimy uruchomić skrypt PowerShell podczas uruchamiania systemu Windows. Aby to zrobić, wybierz Uruchomienie iw oknie, które zostanie otwarte, przejdź do zakładki Powerhell Skrypty.

Teraz musisz skopiować plik ze skryptem PowerShell na kontroler domeny. Kliknij przycisk Pokaż pliki i przeciągnij plik ze skryptem PowerShell (rozszerzenie ps1) do otwartego okna Eksploratora (konsola automatycznie otworzy katalog \\ twojadomena \ SysVol \ twojadomena \ Policies \ Here_GUID_Your_GPO \ Machine \ Scripts \ Startup Twoje zasady w katalogu SysVol na najbliższym kontrolerze domeny).

Ponieważ konfigurujemy uruchomienie skryptu uruchamiania PowerShell, musimy sprawdzić uprawnienia NTFS do odczytu i wykonywania (Read & Execute) dla grupy w uprawnieniach pliku ps1 (lub całego katalogu Machine \ Scripts \ Startup) Komputery domeny.

Teraz musisz nacisnąć przycisk Dodaj i dodaj skopiowany plik skryptu ps1 do listy skryptów uruchomionych przez zasady PowerShell.

Jeśli uruchamiasz kilka skryptów PowerShell przez GPO, możesz kontrolować kolejność od samego początku za pomocą przycisków Góra / Dół.

Aby poprawnie wykonać skrypty PowerShell podczas uruchamiania komputera, należy skonfigurować czas opóźnienia przed rozpoczęciem korzystania z zasad w sekcji Konfiguracja komputera -> Szablony administracyjne -> System -> Zasady grupy. Włącz zasady Konfiguruj Zaloguj się Skrypt Opóźnienie (Ustaw opóźnienie dla skryptu logowania) i określ opóźnienie w minutach przed uruchomieniem skryptów logowania (wystarczające do ukończenia inicjalizacji i pobrania wszystkich niezbędnych usług). Zazwyczaj wystarczy tu umieścić 1-2) minut.

Domyślnie skrypty PowerShell nie są dozwolone w ustawieniach zabezpieczeń systemu Windows. Wartość bieżącego ustawienia zasad skryptów PowerShell można uzyskać za pomocą polecenia Zdobądź-ExecutionPolicy. Jeśli zasada nie zostanie skonfigurowana, polecenie zwróci Ograniczone (wszelkie skrypty zostaną zablokowane). Ustawienia zabezpieczeń dla uruchamiania skryptu PowerShell można skonfigurować za pomocą „Enable Scripting” / „Turn On Skrypt Wykonanie”(W obszarze Konfiguracja komputera GPO -> Szablony administracyjne -> Składniki systemu Windows -> Windows PowerShell). Możliwe wartości zasad:

  • Pozwól tylko podpisany skrypty (AllSigned) - można uruchamiać tylko podpisane skrypty PowerShell („Jak podpisać skrypt PowerShell?”) - najlepszy scenariusz bezpieczeństwa;
  • Pozwól lokalny skrypty i zdalne podpisany skrypty (RemoteSigned) - możesz uruchamiać dowolne lokalne i podpisane skrypty zdalne;
  • Pozwól wszystko skrypty (nieograniczony) - najbardziej niebezpieczna opcja, ponieważ Umożliwia uruchamianie dowolnych skryptów PowerShell.

Jeśli nie odpowiada Ci jeden z proponowanych scenariuszy konfigurowania zasad uruchamiania skryptów PowerShell, możesz uruchomić skrypty PowerShell w trybie Obwodnica (skrypty nie są blokowane, ostrzeżenia nie są wyświetlane).

Aby to zrobić, skrypt PowerShell należy uruchomić z sekcji Uruchamianie -> Skrypty. W tej sekcji możesz skonfigurować skrypt ps1 do działania, tworząc zwykły skrypt startowy, który uruchamia plik wykonywalny powershell.exe (podobny do skryptu opisanego w artykule). Wskazać:

  • Nazwa skryptu: % windir% \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe
  • Parametry skryptu: -Nieinteraktywny -ExecutionPolicy Bypass -Noprofile -file% ~ dp0MyPSScript.ps1

Znaki % ~ dp0 po uruchomieniu na kliencie ścieżka do katalogu ze skryptem w SYSVOL jest automatycznie konwertowana na UNC.

W takim przypadku wymusiłeś włączenie dowolnego (nawet niewiarygodnego) skryptu PowerShell za pomocą parametru Bypass.