Powershell mení politiku vykonávania skriptov. Písanie a spúšťanie skriptov v PowerShell

V administratíve je vždy priestor pre kreativitu. Chcete urobiť nejakú automatizáciu rutinnej úlohy? Prosím! Potrebujete pravidelne niečo kontrolovať na aktivitu? Žiaden problém! Chcete spracovať nejaký obrovský report a zobraziť len relevantné dáta? Aj to je možné. Všetky tieto a mnohé ďalšie úlohy sa najlepšie riešia pomocou skriptov a PowerShell je v prípade Windowsu optimálnou voľbou.

Čo je PowerShell a prečo je dobrý?

Používatelia UNIX a Linuxu a v určitom momente aj macOS sú zvyknutí mať vždy po ruke Bash – trochu staromódny, no univerzálny a výkonný nástroj, s ktorým dokážete úžasné veci len s pár riadkami. Zaregistrujete nový skript v crone - a máte hotovo, už beží na vašom počítači alebo serveri a potichu robí niečo užitočné.

Po návrate do systému Windows (a niekedy sa bez neho nezaobídete) chápete, že skripty .bat, aj keď sú dobré, nie vždy vás zachránia: ich možnosti sú veľmi obmedzené. A ak ste si stále mysleli, že PowerShell je neznáma vec, pre ktorú musíte niečo vyzdvihnúť a nakonfigurovať, potom sa neponáhľajte k záverom - ak sa na to pozriete, nie je to vôbec zlé.

Windows PowerShell je rozšíriteľný open source automatizačný nástroj, ktorý pozostáva z shellu (príkazového riadku) a skriptovacieho jazyka. Prvýkrát bol uvedený v roku 2003 (vtedy sa nazýval Monad). PowerShell 2.0 bol vydaný ako súčasť Windows 7 a Windows Server 2008 R2 a odvtedy je vo Windowse prítomná ako štandardná funkcia. Bol dokonca súčasťou Windows XP SP3. PowerShell je vybudovaný nad rozhraním .NET Framework a je s ním integrovaný. PowerShell má prístup k COM, WMI a ADSI a samozrejme tiež vykonáva príkazy konzoly.

Vo všeobecnosti má nóbl silné väzby na produkty spoločnosti Microsoft Aktívny adresár alebo poštou Exchange server. To vám umožňuje pristupovať k nim cez konzolu a zadávať príkazy bez pripojenia k serverovému zariadeniu.

Ak vás PowerShell predtým nezaujímal, tak s najväčšou pravdepodobnosťou máte druhú verziu. Odporúčam upgradovať aspoň na tretiu – obsahuje oveľa viac funkcií a užitočné tipy. Bez toho, aby sme zachádzali do podrobností, PowerShell 2.0 obsahuje asi tucet modulov a asi 350 príkazov a PowerShell 3.0 už má asi 2 300 cmdletov z viac ako 70 modulov. “Hacker” tiež napísal o tom, ako sa líši najnovší PowerShell verzie 5 od Windowsu 10.

Výber vývojového prostredia a nástrojov

Teraz poďme zistiť, kde je najpohodlnejšie písať kód. Môžete, samozrejme, aj v Notepade, Notepade++ alebo Sublime. Ale toto je in v tomto prípade Nie je to najmúdrejšia voľba redaktora. Najlepšie je začať sa zoznamovať s PowerShell vyzbrojeným priloženým .


Toto ani nie je editor, ale takmer plnohodnotné vývojové prostredie. Existuje funkcia IntelliSense, ktorá vám umožňuje zobraziť zoznam cmdletov a ich parametrov, premenných, pomôcok a ďalších. Podporované sú úryvky, sadu funkcií je možné rozširovať prostredníctvom rôznych doplnkov. Veľmi užitočné je aj okno Príkazy. V ňom môžete vytvárať príkazy vo vizuálnom režime: vyberiete modul, nájdete požadovaný cmdlet a nastavíte mu potrebné parametre. Výsledný príkaz je možné skopírovať do konzoly alebo okamžite vykonať. Vo všeobecnosti akýsi dizajnér pre admina. A samozrejme nechýba zvýraznenie syntaxe, debugger a mnoho ďalšieho.

Má však aj PowerShell ISE dôstojných konkurentov. Jeden z nich - .

PowerGUI je vizuálne rozšírenie prostredia PowerShell. Uľahčuje vytváranie vlastných skriptov pred výberom potrebných cmdletov. Vezmete si to, čo potrebujete na vyriešenie problému, a presúvate časti kódu, kým nezískate skript. Jednou z hlavných funkcií PowerGUI sú Power Packs, hotové skripty publikované komunitou používateľov a sprístupnené na bezplatný prístup. Existujú jednoduché príkazy, ako je pridávanie používateľov, a zložité príkazy – napríklad správa prepínačov a virtuálnych strojov. Všetky sa dajú jednoducho dopĺňať a upravovať podľa potrieb.


Spoločnosti Sapien sú pokročilejším prostredím, ktoré je určené na spoločný vývoj jedného projektu veľké množstvoúčastníkov. Ak ste niekedy pracovali s Visual Studio, myslím, že si všimnete podobnosti. Medzi užitočné funkcie PowerShell Studio patrí panel s páskou, podpora vzdialeného ladenia a funkcie kompilátora, ktoré vám umožňujú zahrnúť skripty do spustiteľné súbory. Existuje podpora rôzne verzie PowerShell.


Za zmienku stojí aj prehliadač skriptov pre Windows PowerShell ISE. Toto nie je vývojové prostredie, ale veľmi zaujímavý nástroj vyvinutý spoločnosťou Microsoft. Prehliadač skriptov poskytuje prístup k databáze hotových skriptov, ktoré možno použiť ako vzorky na písanie vlastného kódu. Táto vec môže tiež analyzovať kód, ktorý napíšete, a navrhnúť, ako ho vylepšiť.


Niekoľko užitočných trikov

Po zistení editora môžete začať písať kód. PowerShell nie je zložitý jazyk a myslím si, že ho rýchlo pochopíte. Príkazy sa tu nazývajú cmdlety a každý z nich pozostáva z dvoch častí. Najprv prichádza akcia, napríklad Získať, Nastaviť, Pridať, Vyvolať, Odstrániť. Potom označuje, na čo je akcia zameraná: Služba, VM, AzureAccount, DHCPServerSetting. Každá časť je od druhej oddelená pomlčkou. Ukazuje sa napríklad get-process. Toto, mimochodom, užitočný príkaz, ktorý zobrazuje zoznam procesov. Povedzme, ak napíšete

získať - spracovať BadTh *

uvidíme niečo takéto:

Rukoväte NPM (K) PM (K) WS (K) VM (M) CPU (procesory) Id ProcessName

------------------------

28 4 - 210844 - 201128 - 163 25,67 2792 BadThread

Teraz môžete ukončiť zmrazený proces:

Môžete to zobraziť rekurzívne, aj keď s trochu zložitejšou logikou:

Môžete tiež urobiť

Mimochodom, pre každé pole v okne možností účtu alebo počítač, ku ktorému môžete pristupovať a čítať údaje. Týmto spôsobom môžete vytvoriť celé časti. Tu je napríklad dotaz založený na údajoch o telefónne čísla:

Získať - AdUser - Filter * - Vlastnosti OfficePhone | FT OfficePhone, používateľské meno

PowerShell vs bat

Niekedy je možné problém vyriešiť pomocou staromódnej metódy alebo pomocou PowerShell. Odporúčam neleniť a používať PS, už len preto, že sa ho tak naučíte rýchlejšie a budete ho vedieť použiť v zložitejších situáciách. Navyše postupne oceníte jeho syntax – elegantnejšiu a konzistentnejšiu. Tu je niekoľko príkladov toho, ako sa veci robili predtým a ako sa dajú robiť pomocou PowerShell.

Nasledujúci príkazový riadok reštartuje počítač s oneskorením desiatich sekúnd:

Takto môžete reštartovať službu dnscache (alebo akúkoľvek inú) cez bat:

sc stop dnscache

sc spustiť dnscache

Spustenie skriptu PowerShell

Táto poznámka je venovaná popisu nastavení požadované parametre na začiatok PowerShell skripty. Najčastejšie pri prvom štarte .ps1 skripty, ktoré vidíte nasledujúce chyby:

Súbor nemožno načítať. Súbor nemá digitálny podpis. Skript sa v systéme nespustí. Pre viac informácií zadajte príkaz "Get-Help about_signing".
Súbor nemožno načítať. Súbor nie je digitálne podpísaný. Skript sa v systéme nespustí. Ďalšie podrobnosti nájdete v časti „Získať pomoc o_podpisovaní“.

Spustiť program od nespoľahlivého vydavateľa? Súbor publikoval CN= Tento vydavateľ nie je týmto systémom označený ako dôveryhodný. Skripty by ste mali spúšťať iba od dôveryhodných vydavateľov.
[V] Nikdy nespúšťať [D] Nespúšťať [R] Spustiť raz [A] Vždy spustiť [?] Pomocník (predvolené "D"):
Chcete spustiť softvér od tohto nedôveryhodného vydavateľa? Súbor vydáva CN= Tento vydavateľ nie je vo vašom systéme dôveryhodný. Spúšťajte iba skripty od dôveryhodných vydavateľov.
[V] Nikdy nespúšťať [D] Nespúšťať [R] Spustiť raz [A] Vždy spustiť [?] Pomocník (predvolené je „D“):

Tieto chyby a hlásenia sú spôsobené nastaveniami politiky Spustenie systému Windows PowerShell. Nemali by ste si však myslieť, že tieto parametre skutočne zvyšujú bezpečnosť operačného systému, pretože kód bude stále fungovať, ak ho skopírujete do konzoly PowerShell. Nastavenia zabezpečenia teda možno deaktivovať – chránia iba pred náhodnými akciami. Preto zvyčajne tento problém rieši tím:

Set-ExecutionPolicy Unrestricted LocalMachine

Samozrejme, tento prístup nie je použiteľný v podnikovom prostredí, takže sa pozrime na túto situáciu podrobnejšie. Spustením cmdlet môžete zobraziť aktuálne nastavenia politiky vo všetkých oblastiach aplikácie Get-Execution policy s parametrom zoznam.

get-executionpolicy -list

Rozsah ExecutionPolicy
—— —————
MachinePolicy Neobmedzené
Používateľské zásady Nedefinované
Proces RemoteSigned
Súčasný užívateľ Všetko podpísané
LocalMachine Obmedzené

Toto pravidlo môže mať 6 hodnôt:

Obmedzené(Politika sa predvolene spustí. Ak sú napríklad všetky oblasti aplikácie nastavené na Nedefinované)
— Umožňuje jednotlivé príkazy, ale skripty nie je možné vykonávať.
- Zabraňuje spusteniu všetkých súborov skriptov vrátane formátovacích a konfiguračných súborov (PS1XML), súborov skriptov modulov (PSM1) a profilov Windows PowerShell (PS1).

Všetko podpísané

- Vyžaduje, aby všetky skripty a konfiguračné súbory boli podpísané dôveryhodným vydavateľom, vrátane skriptov pripravených v lokálny počítač.
- Varovania sa vydávajú pred spustením skriptov vydavateľa, ktoré ešte neboli označené ako dôveryhodné.
— Existuje riziko spustenia nepodpísaných skriptov z iných zdrojov ako je internet, ako aj podpísaných, ale škodlivých skriptov.

RemoteSigned
— Vykonávanie skriptov je povolené.
— Vyžaduje, aby skripty a konfiguračné súbory stiahnuté z internetu boli digitálne podpísané dôveryhodným vydavateľom (vrátane email a programy na odosielanie okamžitých správ).
— Nevyžaduje digitálne podpisy pre skripty spustené a napísané na lokálnom počítači (nestiahnuté z internetu).
— Existuje riziko spustenia podpísaných, ale škodlivých skriptov.

Neobmedzené
- Je možné spustiť nepodpísané skripty. (Existuje riziko spustenia škodlivých skriptov.)
- Upozorní používateľa pred spustením skriptov a konfiguračných súborov stiahnutých z internetu.

Obchvat
— Nič nie je blokované a nezobrazujú sa žiadne upozornenia ani požiadavky.
- Táto politika vykonávania je určená pre konfigurácie, v ktorých Windows skript PowerShell je zabudovaný do väčšej aplikácie alebo pre konfigurácie, kde je platformou pre program Windows PowerShell, ktorý má svoj vlastný bezpečnostný model.

Nedefinované
— Aktuálny rozsah nemá nastavenú politiku vykonávania.
- Ak je politika vykonávania vo všetkých rozsahoch Nedefinovaná, politika vykonávania je Obmedzená, čo je predvolená politika vykonávania.

Existuje päť oblastí, na ktoré sa tieto pravidlá a nastavenia vzťahujú:

MachinePolicy A Používateľské zásady sú nastavené politikami AD resp miestnych politikov tohto počítača.
Proces— rozsah pôsobnosti: aktuálna relácia. Nápoveda hovorí, že jej hodnota je uložená v premennej $PSExecutionPolicyPreference, avšak cez premennú nebolo možné získať/zmeniť hodnotu tejto politiky. Zmeny vykonané v tejto oblasti aplikácie neovplyvnia ostatné relácie.
Súčasný užívateľ— rozsah aktuálneho používateľa. Jeho hodnota je uložená v kľúči databázy Registry HKEY_CURRENT_USER („HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy“).
LocalMachine— rozsah pôsobnosti pre všetkých používateľov aktuálneho počítača. Je uložený v kľúči databázy Registry HKEY_LOCAL_MACHINE("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics\ExecutionPolicy").

Tím get-execution policy existuje parameter -Scope. Pomocou tohto parametra môžete vybrať rozsah, pre ktorý sa bude hodnota politiky zobrazovať.

Get-ExecutionPolicy -scope Proces

Výsledok spustenia cmdlet: RemoteSigned

V tomto prípade majú prioritu Oblasti aplikácie, strojová politika má najvyššiu prioritu, potom má najnižšiu prioritu UserPolicy, Process, CurrentUser a LocalMachine.
Preto v príklade:

Rozsah ExecutionPolicy
—— —————
MachinePolicy Neobmedzené
Používateľské zásady Nedefinované
Proces RemoteSigned
Súčasný užívateľ Všetko podpísané
LocalMachine Obmedzené

V aktuálnej relácii bude výsledná politika Neobmedzená.

Ak chcete zistiť hodnotu politiky vykonávania skriptu pre danú reláciu, musíte použiť cmdlet Get-ExecutionPolicy bez parametrov.

Záver: Neobmedzené

Zmena politiky vykonávania skriptu PowerShell:

Ak chcete zmeniť hodnotu politík vykonávania skriptov PowerShell, existuje rutina cmdlet Set-ExecutionPolicy.
Tento cmdlet má nasledujúce parametre:

-ExecutionPolicy
Označuje hodnotu politiky. Môže mať nasledujúce hodnoty: Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass, Undefined. Tento parameter potrebné špecifikovať. Ak nie je zadané, komadlet si vyžiada hodnoty za behu.

Záver:
Zadajte hodnoty pre nasledujúce parametre:
ExecutionPolicy:

-Rozsah
Definuje rozsah tejto politiky. Môže mať nasledujúce hodnoty: LocalMachine, Process, CurrentUser. Ak parameter rozsahu nie je zadaný, predvolená hodnota je LocalMachine.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

Neobmedzený proces Set-ExecutionPolicy

-Sila
S týmto parametrom nebude cmdlet vyžadovať potvrdenie od používateľa. Napríklad:

Set-ExecutionPolicy Neobmedzený proces -Vynútiť

Rutina nebude nič zobrazovať a použije hodnotu politiky.

-Potvrdiť
Ak vám naopak jedno potvrdenie nestačí. Môžete zadať parameter Potvrdiť a budete mať ďalšiu dodatočnú požiadavku na potvrdenie vašich akcií:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -confirm

Výsledok vykonania:

Potvrdenie
Naozaj chcete vykonať túto akciu?
Vykonanie operácie "Set-ExecutionPolicy" na cieľovom objekte "Neobmedzené".
[Y] Áno - Á [A] Áno pre všetkých - A [N] Nie - N [L] Nie pre všetkých - L [S] Pozastaviť - S [?] Pomocník (predvolená hodnota je "Y"):

Zmena pravidiel vykonávania
Politika vykonávania chráni váš počítač pred nedôveryhodnými skriptami. Zmena politiky vykonávania môže ohroziť bezpečnosť systému, ako je popísané v téme pomoci pre príkaz about_Execution_Policies. Chcete zmeniť politiku vykonávania?
[Y] Áno - Á [N] Nie - N [S] Pozastaviť - S [?] Pomocník (predvolená hodnota je "Y"):. exe -executionpolicy Neobmedzené

Get-ExecutionPolicy -list

Výsledok vykonania:

Rozsah ExecutionPolicy
—— —————
MachinePolicy Neobmedzené
Používateľské zásady Nedefinované
Proces RemoteSigned
Súčasný užívateľ Všetko podpísané
LocalMachine Obmedzené

Zmena nastavení politiky spustenia skriptu pomocou skupinovej politiky.

V skupinovej politike sa parameter, ktorý riadi spúšťanie skriptov, nachádza pozdĺž cesty:

Pre MachinePolicy:

Konfigurácia počítača/Zásady/Šablóny pre správu/Komponenty systému Windows/Windows PowerShell

Konfigurácia počítača/Šablóny na správu/Komponenty systému Windows/Windows PowerShell

Pre Používateľské zásady:
Konfigurácia používateľa/Zásady/Šablóny na správu/Komponenty systému Windows/Windows PowerShell

Konfigurácia používateľa/Šablóny na správu/Komponenty systému Windows/Windows PowerShell

Parameter Execution Policy môže nadobúdať 3 hodnoty.

PowerShell je alternatívny príkazový riadok s rozsiahlymi funkciami. Mnoho majiteľov počítačov, ktorí sa v nich dobre vyznajú systémové procesy, zaujímajú sa o možnosti jeho využitia na Windows 10 a predchádzajúce verzie tento softvér na zmenu konkrétnych procesov a nastavení počítača.

Na používaní PowerShell nie je nič zložité. Postupujte podľa všetkých pokynov v tomto článku a budete úspešní.

Ak nie ste odborníkom na túto tému, práve začínate študovať príkazové riadky a akcie, ktoré je možné v nich vykonávať, bude pre vás užitočné poznať odpovede na hlavné otázky o používaní takejto aplikácie. Napríklad, ako spustiť Windows PowerShell ISE Windows 10 a písať a pracovať so skriptami.

Ako otvoriť PowerShell?

To možno vykonať niekoľkými z nasledujúcich spôsobov:

  • - aplikáciu nájdete vo všeobecnom zozname komponentov pod písmenom W.
  • Pomocou vyhľadávania na paneli úloh - otvorte ho a zadajte slovo PowerShell na vyhľadávanie.
  • Pomocou ponuky „Spustiť“ ho spustite kombináciou Win + R a napíšte názov nástroja, po ktorom sa nájde v systéme.
  • V Commanderi si nastavte akciu PowerShell – mali by ste však vedieť, že s aplikáciou budete pracovať cez bežecká čiara a nie v samostatnom okne.
  • IN nastavenia systému Windows Vyberte položku Vlastnosti panela úloh a ponuku Štart. Na karte „Navigácia“ začiarknite políčko vedľa položky „Nahradiť príkazový riadok PowerShell...“. Teraz môžete pomôcku povoliť pomocou kombinácie Win + X.

Ako písať a spúšťať skripty?

Ako vytvoriť skript PowerShell a spustiť ho? To sa dá jednoducho urobiť v poznámkovom bloku - pomocou neho označte príkazy, ktoré potrebujete v novom dokumente. Potom ho uložte, ale zmeňte formát na .ps1 – toto je prípona, ktorú majú súbory tejto systémovej pomôcky.

V samotnej aplikácii môžete písať skripty takto:

  • Spustite to.
  • Kliknite na položku „Vytvoriť“.
  • Alebo kliknite na „Súbor“ a zo zobrazeného zoznamu vyberte „Vytvoriť“.
  • Napíšte všetky príkazy, ktoré je potrebné vykonať, uložte súbor.

Skripty je možné stále písať a upravovať vo FAR Manager, ale nemožno ich použiť priamo v takejto aplikácii, pretože zobrazuje súbory tohto typu cez štandardný riadok cmd. Ostatné akcie sa však vykonávajú rovnakým spôsobom ako v „natívnom“ nástroji.

Skript môžete spustiť takto:

  1. Prihláste sa do PowerShell ako správca.
  2. Pomocou príkazov cd zadajte umiestnenie požadovaného súboru. Napríklad e: cd\ cd work .\ názov súboru. Ps1 alebo e: \work\názov súboru.ps1
  3. V tomto prípade je e: názov pevný disk kde sa súbor nachádza.
  4. Stlačte Enter.

Program vám pri prvom spustení príkazu určite zobrazí hlásenie s textom „Súbor ___ .Ps1 sa nedá načítať, pretože spustenie skriptu je v tomto systéme zakázané...“. Faktom je, že systém Windows je vďaka vývojárom vybavený ochranou proti rušeniu, takže žiadny z používateľov štandardne nemá prístup k vykonávaniu takýchto akcií. Ale toto obmedzenie sa dá veľmi jednoducho obísť.

Ako? Text, ktorý sa zobrazí s chybou, vám odporučí zadať príkaz get-help about_signing, aby ste získali ďalšie informácie. Môžete postupovať podľa týchto pokynov alebo použiť kombináciu Set-ExecutionPolicy so vzdialeným podpisom - po jej zadaní bude potrebné potvrdenie a obmedzenie bude odstránené.

Ďalšie otázky týkajúce sa použitia

Mnoho ľudí má otázku: ako zistiť verziu PowerShell? Ak to chcete urobiť, postupujte takto:

  1. Zadajte $PSVersionTable.
  2. Ak to k ničomu nevedie, tak máte verziu 1.0 – existuje na to príkaz $host.version.
  3. V opačnom prípade sa objaví detailné informácie o tom, aká verzia aplikácie je nainštalovaná v počítači.

Ďalšou otázkou, ktorá stojí za odpoveď, je, ako odstrániť PowerShell? To si bude vyžadovať nasledujúce akcie:

  • Prejdite cez Ovládací panel do ponuky Pridať alebo odstrániť programy.
  • Nájdite pobočku Microsoft Windows
  • Odinštalujte aktualizáciu pre komponent WindowsPowerShell(TM) a postupujte podľa pokynov systému.

Teraz viete všetko o tom, ako písať a spúšťať skripty PowerShell, tento príkazový riadok môžete použiť na mnohé operácie v systéme. Okrem toho máte vždy možnosť zistiť verziu tohto produktu a dokonca ju čiastočne odstrániť - pretože je nainštalovaný spolu s systémové komponenty, stále to nebude možné urobiť úplne. Odporúčame vám len byť opatrní pri vykonávaní všetkých takýchto akcií, aby ste nepoškodili počítač ako celok.

Spúšťanie skriptov PowerShell podľa plánu

Úlohy takmer každého systémový administrátor zahŕňa písanie rôznych skriptov a ich spúšťanie. Naplánovanie spustenia skriptu podľa plánu pomocou plánovača úloh nie je náročná úloha, ale pri používaní prostredia PowerShell existujú určité nuansy, o ktorých budem diskutovať v tomto článku.

Povedzme teda, že mám skript start.ps1, ktorý musím spúšťať každý deň počas 10 dní. Existujú dva spôsoby riešenia tohto problému.

Metóda 1

Na spustenie skriptu použijeme modul Plánovač úloh, známy aj ako plánovač úloh. Nájdete ho v sekcii Nástroje na správu, alebo kliknutím Win+R a zadanie príkazu taskchd.msc. Otvorte plánovač a v sekcii Akcie vyberte Vytvoriť úlohu.

Na karte Všeobecné zadajte názov a popis úlohy, ako aj (ak je to potrebné) používateľa, pod menom ktorého sa úloha spustí. Aby bola úloha vykonaná bez ohľadu na to, či je používateľ prihlásený do systému, vyberte možnosť „Spustiť, či je používateľ prihlásený alebo nie“. Ak je na dokončenie úlohy potrebné zvýšenie oprávnení, začiarknite možnosť „Spustiť s najvyššími oprávneniami“.

Ďalej prejdite na kartu Spúšťače a vytvorte nový spúšťač, v ktorom bude uložený plán spustenia našej úlohy. V poli Začiatok uvádzame dátum a čas začiatku a v poli Vypršanie uvádzame dátum a čas dokončenia úlohy. Odporúčame vykonávať úlohu denne (Daily) a nastaviť periódu opakovania (Recur every) na 1 deň.

Poznámka. Ak chcete spúšťať úlohu častejšie ako raz za deň, potom musíte vybrať možnosť Raz a v časti Rozšírené nastavenia vybrať položku Opakovať úlohu každých a určiť čas opakovania, minimálne 5 minút, maximálne 1 hodina. Ak to nestačí, môžete dodatočne určiť časové oneskorenie v poli Oneskorenie až do.

A hlavná vec. Prejdite na kartu Akcia a zadajte akciu pre naplánovanú úlohu. Pripomínam, že z bezpečnostných dôvodov PowerShellu je možné skripty spúšťať iba interaktívne, to znamená, že najprv musíte spustiť shell PowerShell a zadať v ňom cestu k skriptu. Preto v poli „Akcia“ označujeme spustenie powershell.exe a v poli „Pridať argumenty“ parameter -File a cestu k nášmu skriptu, takto:

Súbor ″C:\Scripts\start.ps1″

V poli argumentov môžete tiež zadať:

Príkaz – vykoná zadané príkazy a ďalšie parametre. Tento parameter možno použiť aj na spustenie skriptu, napríklad: -Príkaz ″& (C:\Scripts\start.ps1)″. Okrem toho sa môže použiť na odovzdanie parametrov skriptu: -Príkaz ″& (C:\Scripts\start.ps1 -a 1 -b 3)″;
-ExecutionPolicy — nastavuje politiku vykonávania skriptu pre aktuálnu reláciu, môže mať hodnoty Unrestricted, RemoteSigned, AllSigned a Restricted. Zadaná politika bude účinná len v aktuálnej relácii a má prednosť pred akýmikoľvek predtým vytvorenými politikami;
-NonInteractive — zakáže výstup interaktívnych požiadaviek pre používateľa;
-WindowStyle Hidden - spustí okno PowerShellu skrytý režim, neviditeľné pre používateľa;
-NoProfile - zabraňuje načítaniu profilu, čo môže trochu urýchliť vykonávanie skriptu;
-NoExit — po spustení skriptu nechajte shell otvorený. Toto môže byť potrebné pri kontrole a ladení skriptu.

Po vyplnení požadovaných polí kliknite na OK a uložte úlohu. Teraz bude skript bežať podľa plánu každý deň v určený čas počas 10 dní.

Metóda 2

PowerShell 3.0 zaviedol novú funkciu plánovanej úlohy, ktorá umožňuje vytvárať plánované úlohy priamo z konzoly bez použitia modulu Plánovač. Využime to na plánované spustenie nášho skriptu.

Najprv vytvoríme plán spustenia (denne o pol šiestej večer, počas 10 dní):

$t = New-JobTrigger -Denne -O 16:30 -DaysInterval 10

Potom poverenia uložíme do premennej:

$cred = Get-Credential contoso\administrator

Ako možnosť špecifikujeme spustenie úlohy so zvýšenými oprávneniami:

$o = New-ScheduledJobOption -RunElevated

A zaregistrujte úlohu s názvom Štart:

Register-ScheduledJob -Name Start -FilePath C:\Scripts\start.ps1 -Trigger $t -Credential $cred -ScheduledJobOption $o

Aby ste sa uistili, že úloha bola vytvorená, môžete otvoriť plánovač a nájsť našu prácu v sekcii Microsoft\Windows\PowerShell\SheduledJobs.

Poznámka. Pre každú naplánovanú úlohu PowerShell sa v adresári %systemdrive%\Users\%username%\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs vytvorí priečinok s rovnakým názvom. Tento priečinok obsahuje samotnú úlohu v súbore XML a priečinok Výstup, v ktorom je v podpriečinkoch podľa času vykonania uložená história vykonania úlohy - výsledok vykonania (súbor Result.xml) a stav úlohy (Status.xml). Tieto súbory môžu byť užitočné na ladenie a diagnostiku, ak úloha nefunguje správne.

Zásady vykonávania

Na záver mi dovoľte pripomenúť jeden dôležitý bod, a to Exekučnú politiku. Aktuálnu hodnotu politiky môžete zobraziť pomocou príkazu Get-ExecutionPolicy. Pravidlá vykonávania môžu mať nasledujúce hodnoty:

Obmedzené - vykonávanie akýchkoľvek skriptov je zablokované. Predvolená hodnota;
AllSigned - je povolené vykonávanie skriptov s digitálnym podpisom;
RemoteSigned - skripty pripravené na lokálnom počítači je možné spúšťať bez obmedzení, skripty stiahnuté z internetu - iba s digitálnym podpisom;
Neobmedzené - spustenie akýchkoľvek skriptov je povolené. Pri spustení nepodpísaného skriptu, ktorý bol stiahnutý z internetu, môže program vyžadovať potvrdenie;
Obísť – nič nie je blokované, nezobrazujú sa žiadne upozornenia ani požiadavky.

Zvyčajne pre bezproblémové vykonávanie skriptov stačí nastaviť hodnotu na RemoteSigned. Aktuálnu hodnotu môžete zmeniť pomocou príkazu Set-ExecutionPolicy, napríklad:

Set-ExecutionPolicy RemoteSigned -force

Poznámka. Ak je politika vykonávania špecifikovaná v príkaze v konflikte skupinové pravidlá, potom sa parameter zapíše do registra, ale nebude mať žiadny účinok.

Predvolené spustenie skriptu Windows PowerShell v systéme zakázané. Z bezpečnostných dôvodov musia byť všetky skripty PowerShell digitálne podpísané. túto metódu volal - vykonávacia politika. Ak skript túto podmienku nespĺňa, vykoná sa skripty PowerShell v systéme zakázané. Dôvodom je predovšetkým skutočnosť, že skript môže obsahovať škodlivý kód, ktorý môže poškodiť operačný systém.


PowerShell má niekoľko režimov vykonávania, ktoré určujú, aký typ kódu sa môže spúšťať. Existuje 5 rôznych režimov vykonávania:

Obmedzené
Predvolená hodnota. Vykonávanie akýchkoľvek skriptov je zablokované a je povolená prevádzka interaktívnych príkazov.
Všetky podpísané
Spúšťanie skriptov, ktoré majú digitálny podpis, je povolené.
Vzdialene podpísané
Lokálne skripty fungujú bez podpisu. Všetky stiahnuté skripty musia byť digitálne podpísané.
Neobmedzené
Vykonávanie akýchkoľvek skriptov je povolené. Pri spustení nepodpísaného skriptu, ktorý bol stiahnutý z internetu, môže program vyžadovať potvrdenie.
Obchvat
Nič nie je blokované, nezobrazujú sa žiadne upozornenia ani požiadavky.

Predvolený režim pre PowerShell je "obmedzené". V tomto režime PowerShell beží ako interaktívny shell. Ak ste predtým nenakonfigurovali PowerShell, potom namiesto spustenia skriptu uvidíte chybové hlásenie napísané červeným písmom ako na obrázku nižšie.

Najbezpečnejším spôsobom riešenia tohto problému je zmeniť politiku vykonávania na neobmedzenú, spustiť skript a potom zmeniť späť na obmedzenú politiku.

Ak chcete zmeniť politiku vykonávania na neobmedzené, použite konzolu PowerShell s právami správcu a spustite nasledujúci príkaz:

Y (Áno)

Teraz môžete spustiť skript. Systém však vystavujete vážnemu riziku, takže po dokončení spúšťania skriptu nezabudnite nastaviť politiku vykonávania späť na obmedzený režim. Môžete to urobiť pomocou nasledujúceho príkazu:

Po spustení príkazu sa zobrazí výzva na potvrdenie zmeny politiky vykonávania. Odpovieme Y (Áno)

Vykonávanie akýchkoľvek skriptov je zablokované. Predvolená hodnota.

Set-ExecutionPolicy Restricted

Spúšťanie skriptov, ktoré majú digitálny podpis, je povolené.

Skripty pripravené na lokálnom počítači je možné spúšťať bez obmedzení, skripty stiahnuté z internetu – iba ak majú digitálny podpis.

Set-ExecutionPolicy RemoteSigned

Vykonávanie akýchkoľvek skriptov je povolené. Pri spustení nepodpísaného skriptu, ktorý bol stiahnutý z internetu, môže program vyžadovať potvrdenie.

Set-ExecutionPolicy Unrestricted

Nič nie je blokované, nezobrazujú sa žiadne upozornenia ani požiadavky.

Ak chcete spustiť vyššie uvedené príkazy bez potvrdenia zmeny, použite možnosť
-Force , napríklad spustite príkaz:

Set-ExecutionPolicy Bypass -Force

Teraz pri vykonávaní príkazov nemusíte potvrdzovať vykonané zmeny.