A PowerShell parancsfájlok futtatása GPO segítségével

Az ablakcsoport-házirendek lehetővé teszik a különféle parancsfájlok futtatását, amikor a számítógép elindul / leáll, és a felhasználó be- és kijelentkezik. A GPO segítségével nemcsak a klasszikus szkriptfájlokat (.bat, .cmd, vbs) futtathatja a tartományi számítógépeken, hanem a PowerShell szkripteket (.ps1), valamint az Indítás / leállítás / bejelentkezés / kijelentkezés

A modern operációs rendszerekben (Windows 10 / Windows Server 2016) a bejelentkezési / bejelentkezési szkriptek indítását a PowerShell-en közvetlenül a GPO-szerkesztőből konfigurálhatja.

A Windows 7 és a Windows Server 2008 R2 előtt nem tudta közvetlenül végrehajtani a PowerShell fájlokat a GPO-ból (a bat fájlokból származó ps1 fájlokat paraméterként fel kellett hívni a powershell.exe futtatható fájlra)..

Indítsa el a Domain Policy Management Console-t - gpmc.msc (Csoportházirend-kezelő konzol), hozzon létre egy új házirendet, és rendelje hozzá a kívánt tárolóhoz a felhasználókkal vagy a számítógépekkel (a WMI GPO-szűrőkkel finomabb irányelvet használhat). Váltás az irányelv szerkesztési módjára.

A PowerShell-parancsfájl futtatásához ki kell választania egy csoportházirend-objektum részt, attól függően, hogy mikor szeretné futtatni a szkriptet.

  • Ha a PS szkriptet akkor indítják el, amikor a felhasználó bejelentkezik a számítógépre (például a felhasználói környezeti paraméterek, programok beállítása: amikor bejelentkezik a felhasználóba, automatikusan aláírást hoz létre az Outlookban az AD felhasználó adatai alapján, konfigurálja a képernyőkímélőt vagy elindítja a képernyő beállításait), vagy amikor a felhasználó kijelentkezik , el kell mennie a GPO szakaszhoz: használó Configuration -> Irányelvek -> Windows Beállítások -> Szkriptek (bejelentkezés / Kilépés);
  • Ha a PowerShell parancsfájlt futtatni akarja a számítógép indításakor (elavult protokollok letiltása: NetBIOS, SMBv1, a számítógép biztonsági beállításainak konfigurálása stb.), Vagy a számítógép megfelelő leállítása előtt meg kell lépnie a GPO szakaszhoz a számítógép beállításain: Számítógép konfigurálása -> Házirendek -> Windows beállítások -> Parancsfájlok (indítás / leállítás).

A PowerShell parancsfájl futtatása a számítógép indításakor a csoportházirend segítségével

Tegyük fel, hogy futtatnunk kell egy PowerShell szkriptet a Windows indításakor. Ehhez válassza a lehetőséget Indítás és a megnyíló ablakban lépjen a fülre PowerShell Scripts.

Most át kell másolnia a fájlt a PowerShell parancsfájllal a tartományvezérlőre. Kattintson a gombra Fájlok megjelenítése és húzza a fájlt a PowerShell parancsfájllal (ps1 kiterjesztés) a megnyitott Explorer ablakba (a konzol automatikusan megnyitja a könyvtárat \\ saját domain \ SysVol \ saját domain \ irányelvek \ here_GUID_Your_GPO \ gép \ szkriptek \ indítás házirendje a legközelebbi tartományvezérlő SysVol könyvtárában).

mert konfiguráljuk a Startup PowerShell parancsfájl elindítását, ellenőriznünk kell az NTFS engedélyeket a ps1 fájl (vagy a teljes könyvtár \ Scripts \ Startup) engedélyében szereplő csoport olvasására és végrehajtására (Read & Execute) a csoport olvasására és végrehajtására. Domain számítógépek.

Most meg kell nyomnia a gombot hozzáad és adja hozzá a másolt ps1 szkriptfájlt a PowerShell házirend által indított szkriptek listájához.

Ha több PowerShell-parancsfájlt futtat GPO-n keresztül, a fel / le gombokkal a rendelést a kezdetektől vezérelheti..

A PowerShell szkriptek helyes végrehajtásához a számítógép indításakor be kell állítania a késleltetési időt, mielőtt elkezdené a házirend használatát a Számítógép konfigurálása -> Felügyeleti sablonok -> Rendszer -> Csoportházirend szakaszban. Házirend engedélyezése konfigurálása Logon forgatókönyv késés (Állítsa be a bejelentkezési szkript késleltetését) és adja meg a késleltetést percben a bejelentkezési szkriptek elindítása előtt (elegendő az inicializálás elvégzéséhez és az összes szükséges szolgáltatás letöltéséhez). Általában elég ahhoz, hogy ide tegyük 1-2 perc.

Alapértelmezés szerint a PowerShell szkriptek nem engedélyezettek a Windows biztonsági beállításaiban. A jelenlegi PowerShell szkript házirend-beállítás értékét a paranccsal lehet beszerezni kap-ExecutionPolicy. Ha a házirend nincs konfigurálva, akkor a parancs Korlátozott lesz (minden szkript blokkolva lesz). A PowerShell-parancsfájl elindításához szükséges biztonsági beállítások az „Engedélyezze a parancsfájlokat” / „Kapcsolja tovább forgatókönyv végrehajtás”(GPO számítógép-konfiguráció -> Felügyeleti sablonok -> Windows-összetevők -> Windows PowerShell alatt). Lehetséges politikai értékek:

  • Hagyjuk csak aláírt szkriptek (AllSigna) - csak aláírt PowerShell szkriptek futtathatók („Hogyan írjunk alá egy PowerShell szkriptet?”) - a legjobb biztonsági forgatókönyv;
  • Hagyjuk helyi szkriptek és távoli aláírt szkriptek (RemoteSigned) - bármilyen helyi és aláírt távoli szkriptet futtathat;
  • Hagyjuk minden szkriptek (korlátlan) - a legbiztonságosabb lehetőség, mert Lehetővé teszi bármely PowerShell szkript futtatását.

Ha a PowerShell-parancsfájlok elindítására vonatkozó házirend felállításának egyik javasolt forgatókönyve sem megfelel Önnek, akkor a PowerShell-parancsfájlokat a módban is futtathatja kitérő (A szkriptek nem vannak blokkolva, a figyelmeztetések nem jelennek meg).

Ehhez a PowerShell szkriptet az Indítás -> Parancsfájlok szakaszból kell futtatni. Ebben a szakaszban a ps1 szkript futtatásához konfigurálható egy szokásos indító szkript létrehozásával, amely elindítja a powershell.exe futtatható fájlt (hasonlóan a cikkben leírt szkripthez). határozza meg:

  • Szkript neve: % windir% \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe
  • Szkript paraméterei: -Nem interaktív -ExecutionPolicy Bypass -Noprofile -file% ~ dp0MyPSScript.ps1

szimbólumok % ~ dp0 Amikor elindítják az ügyfélen, a SYSVOL parancsfájllal ellátott könyvtár elérési útja automatikusan UNC-vé alakul.

Ebben az esetben erőteljesen engedélyezte az (akár megbízhatatlan) PowerShell-parancsfájlok elindítását a Bypass paraméter használatával..