Powershell mijenja politiku izvršavanja skripte. Pisanje i pokretanje skripti u PowerShell-u

U administraciji uvijek ima prostora za kreativnost. Želite li malo automatizirati rutinski zadatak? Molim! Trebate li redovito nešto provjeravati za aktivnost? Nema problema! Želite li obraditi neko ogromno izvješće i prikazati samo relevantne podatke? I to je moguće. Sve te i mnoge druge zadatke najbolje je riješiti pomoću skripti, a PowerShell je optimalan izbor u slučaju Windowsa.

Što je PowerShell i zašto je dobar?

Korisnici UNIX-a i Linuxa, a u nekom trenutku i macOS-a, navikli su uvijek imati pri ruci Bash - pomalo staromodan, ali univerzalan i moćan alat s kojim možete napraviti nevjerojatne stvari sa samo par redaka. Registrirate novu skriptu u cron - i gotovi ste, već se izvodi na vašem računalu ili poslužitelju i tiho radi nešto korisno.

Vraćajući se na Windows (i ponekad ne možete bez njega), shvaćate da .bat skripte, iako dobre, ne spašavaju uvijek: njihove su mogućnosti vrlo ograničene. A ako ste i dalje mislili da je PowerShell nepoznata stvar za koju morate nešto pokupiti i konfigurirati, onda nemojte žuriti sa zaključcima - ako ga pogledate, uopće nije loše.

Windows PowerShell je proširivi alat za automatizaciju otvorenog koda koji se sastoji od ljuske (naredbenog retka) i skriptnog jezika. Prvi put je prikazan 2003. (tada se zvao Monad). PowerShell 2.0 objavljen je kao dio sustava Windows 7 i Windows poslužitelj 2008 R2 i od tada je prisutan u sustavu Windows kao standardna značajka. Čak je bio uključen u Windows XP SP3. PowerShell je izgrađen na temelju .NET Frameworka i integriran je s njim. PowerShell može pristupiti COM-u, WMI-ju i ADSI-ju, a naravno također izvršava i konzolne naredbe.

Općenito, posh ima jake veze s Microsoftovim proizvodima Aktivni direktorij ili poštanski Exchange poslužitelj. To vam omogućuje pristup putem konzole i izdavanje naredbi bez spajanja na poslužiteljsku opremu.

Ako vas prije nije zanimao PowerShell, najvjerojatnije imate drugu verziju. Preporučam nadogradnju barem na treću - sadrži mnogo više značajki i korisni savjeti. Ne ulazeći u detalje, PowerShell 2.0 uključuje desetak modula i oko 350 naredbi, a PowerShell 3.0 već ima oko 2300 cmdleta iz više od 70 modula. “Haker” je također napisao kako se najnovija PowerShell verzija 5 razlikuje od Windowsa 10.

Odabir razvojnog okruženja i alata

Sada shvatimo gdje je najprikladnije pisati kod. Možete, naravno, iu Notepadu, Notepad++ ili Sublimeu. Ali ovo je in u ovom slučaju Nije najpametniji urednikov izbor. Najbolje je započeti upoznavanje s PowerShellom naoružani priloženim .


Ovo čak nije ni uređivač, već gotovo punopravno razvojno okruženje. Postoji značajka IntelliSense koja vam omogućuje pregled popisa cmdleta i njihovih parametara, varijabli, uslužnih programa i više. Isječci su podržani, moguće je proširiti skup funkcija kroz razne dodatke. Prozor s naredbama također je vrlo koristan. U njemu možete sastavljati naredbe u vizualnom načinu rada: odaberete modul, pronađete željeni cmdlet i postavite mu potrebne parametre. Rezultirajuća naredba može se kopirati na konzolu ili odmah izvršiti. Općenito, vrsta dizajnera za administratora. I naravno, tu je isticanje sintakse, program za ispravljanje pogrešaka i još mnogo toga.

Međutim, PowerShell ISE također ima dostojni konkurenti. Jedan od njih - .

PowerGUI je vizualno proširenje za PowerShell. Olakšava izradu vlastitih skripti prije odabira cmdleta koji su vam potrebni. Uzimate ono što vam je potrebno za rješavanje problema i povlačite i ispuštajte dijelove koda dok ne dobijete skriptu. Jedna od glavnih značajki PowerGUI-ja su Power Packs, gotove skripte koje objavljuje zajednica korisnika i stavlja ih na raspolaganje besplatnom pristupu. Postoje jednostavne naredbe poput dodavanja korisnika i one složene - na primjer upravljanje prekidačima i virtualnim strojevima. Svi oni se mogu lako dopuniti i modificirati prema potrebama.


Sapien tvrtke su naprednije okruženje, koje je dizajnirano za zajednički razvoj jednog projekta veliki iznos sudionika. Ako ste ikada radili s Visual Studiom, mislim da ćete primijetiti sličnosti. Neke korisne značajke programa PowerShell Studio uključuju ploču vrpce, podršku za daljinsko otklanjanje pogrešaka i značajke prevoditelja koje vam omogućuju uključivanje skripti u izvršne datoteke. Postoji podrška različite verzije PowerShell.


Script Browser za Windows PowerShell ISE također je vrijedan spomena. Ovo nije razvojno okruženje, već vrlo zanimljiv alat koji je razvio Microsoft. Script Browser omogućuje pristup bazi podataka gotovih skripti koje se mogu koristiti kao uzorci za pisanje vlastitog koda. Ova stvar također može analizirati kod koji pišete i predložiti kako ga poboljšati.


Nekoliko korisnih trikova

Nakon što ste shvatili editor, možete početi pisati kod. PowerShell nije kompliciran jezik i mislim da ćete ga brzo savladati. Naredbe se ovdje nazivaju cmdleti, a svaka od njih sastoji se od dva dijela. Prvo dolazi radnja, na primjer Get, Set, Add, Invoke, Remove. Zatim označava na što je radnja usmjerena: Service, VM, AzureAccount, DHCPServerSetting. Svaki dio je odvojen od drugog crticom. Ispada, na primjer, get-process. Ovo, usput, korisna naredba, koji prikazuje popis procesa. Recimo, ako pišete

dobiti - obraditi BadTh *

vidjet ćemo nešto poput ovoga:

Rukuje NPM (K) PM (K) WS (K) VM (M) CPU (s) Id ProcessName

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

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

Sada možete prekinuti zamrznuti proces:

Možete ga vidjeti rekurzivno, iako s malo složenijom logikom:

Također možete učiniti

Usput, za svako polje u prozoru opcija račun ili računalo kojem možete pristupiti i pročitati podatke. Na ovaj način možete napraviti cijele dijelove. Evo, na primjer, upita temeljenog na podacima o telefonski brojevi:

Get - AdUser - Filter * - Svojstva OfficePhone | FT OfficePhone, UserPrincipalName

PowerShell protiv bat

Ponekad se problem može riješiti staromodnom metodom ili korištenjem PowerShell-a. Preporučam da ne budete lijeni i koristite PS, makar samo zato što ćete ga tako brže naučiti i moći ćete ga koristiti u složenijim situacijama. Osim toga, postupno ćete cijeniti njegovu sintaksu - elegantniju i dosljedniju. Evo nekoliko primjera kako su se stvari radile prije i kako se to može učiniti pomoću PowerShell-a.

Sljedeći naredbeni redak ponovno će pokrenuti računalo s odgodom od deset sekundi:

Ovako možete ponovno pokrenuti dnscache servis (ili bilo koji drugi) preko bat-a:

sc zaustavi dnscache

sc pokreni dnscache

Pokretanje PowerShell skripte

Ova bilješka je posvećena opisu postavki traženi parametri za početak PowerShell skripte. Najčešće pri prvom startu .ps1 skripte koje vidite sljedeće greške:

Datoteka ne može se učitati. Datoteka nema digitalni potpis. Skripta se neće izvršiti na sustavu. Za više informacija unesite naredbu "Get-Help about_signing".
Datoteka ne može se učitati. Datoteka nije digitalno potpisan. Skripta se neće izvršiti na sustavu. Za više detalja pogledajte “Pomoć o_potpisivanju”.

Pokrenuti program nepouzdanog izdavača? Datoteka objavio CN= Ovaj izdavač nije označen kao pouzdan u ovom sustavu. Trebali biste pokretati samo skripte pouzdanih izdavača.
[V] Nikad ne pokreni [D] Ne pokreni [R] Pokreni jednom [A] Uvijek pokreni [?] Pomoć (zadano "D"):
Želite li pokrenuti softver ovog nepouzdanog izdavača? Datoteka objavljuje CN= Ovaj izdavač nije pouzdan u vašem sustavu. Pokrećite samo skripte pouzdanih izdavača.
[V] Nikad ne pokreni [D] Ne pokreni [R] Pokreni jednom [A] Uvijek pokreni [?] Pomoć (zadano je "D"):

Ove pogreške i poruke uzrokovane su postavkama pravila Windows izvršenje PowerShell. Međutim, nemojte misliti da ovi parametri zapravo povećavaju sigurnost OS-a, jer će kod i dalje raditi ako ga kopirate u PowerShell konzolu. Stoga se sigurnosne postavke mogu onemogućiti - one štite samo od slučajnih radnji. Stoga obično ovaj problem rješava tim:

Set-ExecutionPolicy Unrestricted LocalMachine

Naravno, ovaj pristup nije primjenjiv u korporativnom okruženju, pa pogledajmo ovu situaciju detaljnije. Možete vidjeti trenutne postavke pravila u svim područjima aplikacije pokretanjem cmdleta Get-Executionpolicy s parametrom liste.

get-executionpolicy -list

Opseg Izvršna politika
—— —————
MachinePolicy Neograničen
Korisnička Pravila Nedefiniran
Postupak RemoteSigned
Trenutni korisnik Svi Potpisani
LocalMachine Ograničen

Ovo pravilo može imati 6 vrijednosti:

Ograničen(Pravila se izvršavaju prema zadanim postavkama. Na primjer, ako su sva područja aplikacije postavljena na Nedefinirano)
— Omogućuje pojedinačne naredbe, ali se skripte ne mogu izvršiti.
- Sprječava izvršavanje svih skriptnih datoteka, uključujući formatne i konfiguracijske datoteke (PS1XML), modulske skriptne datoteke (PSM1) i Windows PowerShell profile (PS1).

Svi Potpisani

- Zahtijeva da sve skripte i konfiguracijske datoteke potpiše pouzdani izdavač, uključujući skripte pripremljene u lokalno računalo.
- Upozorenja se izdaju prije izvršavanja skripti izdavača za koje još nije utvrđeno da su pouzdane.
— Postoji rizik od izvršavanja nepotpisanih skripti iz izvora koji nisu internet, kao i potpisanih, ali zlonamjernih skripti.

RemoteSigned
— Izvršenje skripti je dopušteno.
— Zahtijeva da skripte i konfiguracijske datoteke preuzete s interneta budu digitalno potpisane od strane pouzdanog izdavača (uključujući elektronička pošta i programi za razmjenu trenutnih poruka).
— Ne zahtijeva digitalne potpise za skripte koje se izvode i pišu na lokalnom računalu (ne preuzimaju se s Interneta).
— Postoji rizik od izvršavanja potpisanih, ali zlonamjernih skripti.

Neograničen
- Nepotpisane skripte se mogu izvršiti. (Postoji rizik od izvršavanja zlonamjernih skripti.)
- Upozorava korisnika prije izvršavanja skripti i konfiguracijskih datoteka preuzetih s interneta.

Zaobići
— Ništa nije blokirano, niti se pojavljuju upozorenja ili zahtjevi.
- Ova politika izvršavanja namijenjena je konfiguracijama u kojima Windows skripta PowerShell je ugrađen u veću aplikaciju ili za konfiguracije u kojima je Windows PowerShell platforma za program koji ima vlastiti sigurnosni model.

Nedefiniran
— Trenutačni opseg nema postavljenu politiku izvršavanja.
- Ako je pravilo izvršavanja u svim opsegima Nedefinirano, pravilo izvršenja je Ograničeno, što je zadano pravilo izvršavanja.

Postoji pet područja u kojima se primjenjuju ova pravila i postavke:

MachinePolicy I Korisnička Pravila postavljaju AD politike ili lokalni političari ovog računala.
Postupak— opseg primjene: trenutna sesija. Pomoć kaže da je njegova vrijednost pohranjena u varijabli $PSExecutionPolicyPreference, međutim, nije bilo moguće dobiti/promijeniti vrijednost ove politike kroz varijablu. Promjene napravljene u ovom području primjene neće utjecati na druge sesije.
Trenutni korisnik— opseg trenutnog korisnika. Njegova je vrijednost pohranjena u ključu registra HKEY_CURRENT_USER (“HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy”).
LocalMachine— opseg primjene na sve korisnike trenutnog računala. Pohranjen je u ključu registra HKEY_LOCAL_MACHINE("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics\ExecutionPolicy").

Tim get-executionpolicy postoji parametar -Scope. Pomoću ovog parametra možete odabrati opseg za koji će se prikazati vrijednost pravila.

Get-ExecutionPolicy -scope Proces

Rezultat pokretanja cmdleta: RemoteSigned

U ovom slučaju Područja primjene imaju prioritet, MachinePolicy ima najviši prioritet, zatim UserPolicy, Process, CurrentUser i LocalMachine imaju najniži prioritet.
Stoga u primjeru:

Opseg Izvršna politika
—— —————
MachinePolicy Neograničen
Korisnička Pravila Nedefiniran
Postupak RemoteSigned
Trenutni korisnik Svi Potpisani
LocalMachine Ograničen

U trenutnoj sesiji, rezultirajuće pravilo bit će Neograničeno.

Kako biste saznali vrijednost pravila izvršavanja skripte za danu sesiju, trebate upotrijebiti cmdlet Get-ExecutionPolicy bez parametara.

Zaključak: Neograničeno

Promjena politike izvršavanja skripte PowerShell:

Za promjenu vrijednosti pravila izvršavanja PowerShell skripte postoji cmdlet Set-ExecutionPolicy.
Ovaj cmdlet ima sljedeće parametre:

-Politika izvršenja
Označava vrijednost police. Može imati sljedeće vrijednosti: Ograničeno, AllSigned, RemoteSigned, Unrestricted, Bypass, Nedefined. Ovaj parametar potrebno navesti. Ako nije navedeno, comadlet će tražiti vrijednosti tijekom izvođenja.

Zaključak:
Navedite vrijednosti za sljedeće parametre:
Politika izvršenja:

-Opseg
Definira opseg ove politike. Može imati sljedeće vrijednosti: LocalMachine, Process, CurrentUser. Ako parametar opsega nije naveden, zadana vrijednost je LocalMachine.

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

Set-ExecutionPolicy Neograničeni proces

-Sila
S ovim parametrom, cmdlet neće zahtijevati potvrdu od korisnika. Na primjer:

Set-ExecutionPolicy Unrestricted Process -Force

Cmdlet neće ništa prikazati i primijenit će vrijednost pravila.

-Potvrdi
Ako vam, naprotiv, jedna potvrda nije dovoljna. Možete navesti parametar Potvrdi i imat ćete još jedan, dodatni zahtjev za potvrdu svojih radnji:

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process -confirm

Rezultat izvršenja:

Potvrda
Jeste li sigurni da želite izvršiti ovu radnju?
Izvođenje operacije "Set-ExecutionPolicy" na ciljnom objektu "Unrestricted".
[Y] Da - Y [A] Da za sve - A [N] Ne - N [L] Ne za sve - L [S] Obustavi - S [?] Pomoć (zadana vrijednost je "Y"):

Promjena politike izvršenja
Politika izvršavanja štiti vaše računalo od nepouzdanih skripti. Promjena pravila izvršavanja može ugroziti sigurnost sustava, kao što je opisano u temi pomoći za naredbu about_Execution_Policies. Želite li promijeniti politiku izvršenja?
[Y] Da - Y [N] Ne - N [S] Obustavi - S [?] Pomoć (zadana vrijednost je "Y"):. exe -executionpolicy Neograničeno

Get-ExecutionPolicy -list

Rezultat izvršenja:

Opseg Izvršna politika
—— —————
MachinePolicy Neograničen
Korisnička Pravila Nedefiniran
Postupak RemoteSigned
Trenutni korisnik Svi Potpisani
LocalMachine Ograničen

Promjena postavki pravila pokretanja skripte pomoću pravila grupe.

U pravilima grupe, parametar koji kontrolira pokretanje skripti nalazi se duž staze:

Za MachinePolicy:

Računalna konfiguracija/Pravila/Administrativni predlošci/Windows komponente/Windows PowerShell

Računalna konfiguracija/Administrativni predlošci/Windows komponente/Windows PowerShell

Za Korisnička Pravila:
Korisnička konfiguracija/Pravila/Administrativni predlošci/Windows komponente/Windows PowerShell

Korisnička konfiguracija/Administrativni predlošci/Komponente sustava Windows/Windows PowerShell

Parametar Izvršne politike može imati 3 vrijednosti.

PowerShell je alternativni naredbeni redak s velikom funkcionalnošću. Mnogi vlasnici računala koji dobro poznaju procesi sustava, zainteresirani su za mogućnosti korištenja na Windows 10 i prethodne verzije ovaj softver za promjenu određenih procesa i postavki osobnog računala.

Nema ništa komplicirano u korištenju PowerShell-a. Samo slijedite sve upute u ovom članku i uspjet ćete.

Ako niste stručnjak za ovu temu, tek počinjete proučavati naredbene retke i radnje koje se mogu izvesti u njima, bit će vam korisno znati odgovore na glavna pitanja o korištenju takve aplikacije. Na primjer, kako pokrenuti Windows PowerShell ISE Windows 10 i pisati skripte i raditi sa njima.

Kako otvoriti PowerShell?

To se može učiniti na nekoliko sljedećih načina:

  • - aplikaciju ćete pronaći u općem popisu komponenti pod slovom W.
  • Korištenje pretraživanja na programskoj traci - otvorite je i unesite riječ PowerShell za pretraživanje.
  • Pomoću izbornika "Pokreni" pokrenite ga kombinacijom Win + R i napišite naziv uslužnog programa, nakon čega će se naći u sustavu.
  • U Commanderu postavite radnju PowerShell - ali trebate znati da ćete raditi s aplikacijom do kraja linija za trčanje, a ne u zasebnom prozoru.
  • U Windows postavke Odaberite Svojstva programske trake i izbornik Start. Na kartici "Navigacija" potvrdite okvir pored "Zamijeni naredbeni redak s PowerShell...". Sada možete omogućiti uslužni program pomoću kombinacije Win+X.

Kako napisati i pokrenuti skripte?

Kako stvoriti PowerShell skriptu i pokrenuti je? To se jednostavno može učiniti u bilježnici - pomoću nje označite naredbe koje su vam potrebne u novom dokumentu. Zatim ga spremite, ali promijenite format u .ps1 - ovo je ekstenzija koju imaju datoteke ovog uslužnog programa sustava.

Skripte možete pisati u samoj aplikaciji ovako:

  • Pokreni ga.
  • Kliknite na stavku "Stvori".
  • Ili kliknite na "File" i odaberite "Create" s popisa koji se pojavi.
  • Napišite sve naredbe koje je potrebno izvršiti, spremite datoteku.

Skripte se i dalje mogu pisati i uređivati ​​u FAR Manageru, ali se ne mogu koristiti izravno u takvoj aplikaciji, jer prikazuje datoteke ove vrste kroz standardnu ​​cmd liniju. Međutim, ostale radnje izvode se na isti način kao u "nativnom" uslužnom programu.

Skriptu možete pokrenuti na ovaj način:

  1. Prijavite se u PowerShell kao administrator.
  2. Upotrijebite naredbe cd da odredite mjesto potrebne datoteke. Na primjer, e: cd\ cd work .\ naziv datoteke. Ps1 ili e: \work\filename.ps1
  3. U ovom slučaju e: je ime tvrdi disk gdje se datoteka nalazi.
  4. Pritisni enter.

Program će vam svakako pokazati poruku s tekstom “Datoteka ___ .Ps1 se ne može učitati jer je izvršavanje skripte zabranjeno na ovom sustavu...” kada prvi put pokrenete naredbu. Činjenica je da je Windows opremljen zaštitom od smetnji zahvaljujući programerima, tako da nitko od korisnika prema zadanim postavkama nema pristup za izvođenje takvih radnji. Ali ovo se ograničenje može vrlo lako zaobići.

Kako? Tekst koji se pojavljuje s pogreškom preporučit će vam da unesete naredbu get-help about_signing kako biste dobili više informacija. Možete slijediti ove upute ili koristiti kombinaciju Set-ExecutionPolicy remotesigned - nakon njezina unosa bit će potrebna potvrda i ograničenje će biti uklonjeno.

Ostala pitanja o upotrebi

Mnogi ljudi imaju pitanje: kako saznati verziju PowerShell-a? Da biste to učinili, učinite sljedeće:

  1. Unesite $PSVersionTable.
  2. Ako ovo ne vodi ničemu, onda imate verziju 1.0 - za nju postoji naredba $host.version.
  3. Inače će se pojaviti detaljne informacije o tome koja je verzija aplikacije instalirana na računalu.

Drugo pitanje na koje vrijedi odgovoriti je kako ukloniti PowerShell? To će zahtijevati sljedeće radnje:

  • Idite kroz upravljačku ploču do izbornika Dodaj/ukloni programe.
  • Pronađite granu Microsoft Windows
  • Deinstalirajte ažuriranje za komponentu WindowsPowerShell(TM) i slijedite upute sustava.

Sada znate sve o tome kako napisati i pokrenuti PowerShell skripte, možete koristiti ovu naredbenu liniju za mnoge operacije na sustavu. Osim toga, uvijek imate priliku saznati verziju ovog proizvoda i čak ga djelomično ukloniti - zbog činjenice da je instaliran s komponente sustava, to još uvijek neće biti moguće učiniti u potpunosti. Samo vam savjetujemo da budete oprezni pri izvođenju svih takvih radnji kako ne biste oštetili računalo u cjelini.

Pokretanje PowerShell skripti prema rasporedu

Zadaci gotovo svih Administrator sustava uključuje pisanje raznih skripti i njihovo pokretanje. Planiranje pokretanja skripte prema rasporedu pomoću Task Schedulera nije težak zadatak, ali postoje neke nijanse kada koristite PowerShell, o kojima ću govoriti u ovom članku.

Dakle, recimo da imam skriptu start.ps1 koju moram pokretati svaki dan 10 dana. Postoje dva načina za rješavanje ovog problema.

Metoda 1

Za pokretanje skripte koristit ćemo dodatak Task Scheduler, poznat i kao planer zadataka. Možete ga pronaći u odjeljku Administrativni alati ili klikom Win+R i unos naredbe taskschd.msc. Otvorite planer i u odjeljku Radnje odaberite Stvori zadatak.

Na kartici Općenito odredite naziv i opis zadatka te (ako je potrebno) korisnika pod čijim imenom će se zadatak pokrenuti. Kako bi se zadatak izvršio neovisno o tome je li korisnik prijavljen u sustav odaberite opciju “Pokreni bez obzira je li korisnik prijavljen ili ne”. Ako je za dovršenje zadatka potrebno povećanje privilegija, označite opciju "Pokreni s najvišim privilegijama".

Zatim idite na karticu Okidači i izradite novi okidač koji će pohraniti raspored pokretanja za naš zadatak. U polju Početak označavamo datum i vrijeme početka, a u polju Istek označavamo datum i vrijeme završetka zadatka. Naznačujemo da zadatak izvršavamo svakodnevno (Daily) i postavljamo period ponavljanja (Recur every) na 1 dan.

Bilješka. Ako želite pokretati zadatak češće od jednom dnevno, tada je potrebno odabrati Jednokratno, te u odjeljku Napredne postavke odabrati stavku Ponavljaj zadatak svaki i odrediti vrijeme ponavljanja, minimalno 5 minuta, maksimalno 1 sat. Ako to nije dovoljno, možete dodatno odrediti vremensku odgodu u polju Odgoda zadatka do.

I ono glavno. Idite na karticu Akcija i odredite radnju za planirani zadatak. Podsjećam vas da se iz sigurnosnih razloga PowerShell-a skripte mogu izvršavati samo interaktivno, odnosno prvo morate pokrenuti PowerShell ljusku i u njoj navesti put do skripte. Stoga u polju "Action" označavamo pokretanje powershell.exe, a u polju "Add Arguments" parametar -File i put do naše skripte, ovako:

Datoteka ″C:\Skripte\start.ps1″

Također možete navesti u polju argumenata:

Naredba - Izvršava navedene naredbe i sve druge parametre. Ovaj se parametar također može koristiti za pokretanje skripte, na primjer: -Naredba ″& (C:\Scripts\start.ps1)″. Osim toga, može se koristiti za prosljeđivanje parametara skripti: -Naredba ″& (C:\Scripts\start.ps1 -a 1 -b 3)″;
-ExecutionPolicy — postavlja politiku izvršavanja skripte za trenutnu sesiju, može uzeti vrijednosti Unrestricted, RemoteSigned, AllSigned i Restricted. Navedena politika će biti na snazi samo u trenutnoj sesiji i ima prednost nad svim prethodno kreiranim politikama;
-NonInteractive — onemogući ispis interaktivnih zahtjeva korisniku;
-WindowStyle Hidden - pokreće PowerShell prozor skriveni način rada, nevidljiv korisniku;
-NoProfile - sprječava učitavanje profila, što može donekle ubrzati izvršavanje skripte;
-NoExit — ostavite ljusku otvorenom nakon pokretanja skripte. Ovo može biti potrebno prilikom provjere i otklanjanja pogrešaka skripte.

Nakon popunjavanja obaveznih polja kliknite OK i spremite zadatak. Sada će se skripta izvoditi prema rasporedu svaki dan u određeno vrijeme tijekom 10 dana.

Metoda 2

PowerShell 3.0 uveo je novu funkcionalnost Scheduled Job, koja omogućuje stvaranje zakazanih poslova izravno s konzole, bez upotrebe dodatka Scheduler. Iskoristimo ga za planirano pokretanje naše skripte.

Prvo kreiramo raspored lansiranja (svakodnevno u pola šest navečer, 10 dana):

$t = New-JobTrigger -Daily -At 16:30 -DaysInterval 10

Zatim spremamo vjerodajnice u varijablu:

$cred = Get-Credential contoso\administrator

Kao opciju navodimo pokretanje zadatka s povišenim privilegijama:

$o = New-ScheduledJobOption -RunElevated

I registrirajte zadatak pod nazivom Start:

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

Kako biste bili sigurni da je posao kreiran, možete otvoriti planer i pronaći naš posao u odjeljku Microsoft\Windows\PowerShell\SheduledJobs.

Bilješka. Za svaki planirani posao PowerShell-a kreira se mapa istog naziva u direktoriju %systemdrive%\Users\%username%\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs. Ova mapa sadrži sam zadatak u XML datoteci i Izlaznu mapu u kojoj je u podmapama po vremenu izvršenja pohranjena povijest izvršenja zadatka - rezultat izvršenja (Result.xml datoteka) i status zadatka (Status.xml). Ove datoteke mogu biti korisne za otklanjanje pogrešaka i dijagnostiku ako posao ne radi ispravno.

Politika izvršenja

Zaključno, dopustite mi da vas podsjetim na jednu važnu točku, naime na Politiku izvršenja. Možete vidjeti trenutnu vrijednost pravila pomoću naredbe Get-ExecutionPolicy. Politika izvršenja može imati sljedeće vrijednosti:

Ograničeno - izvršenje bilo koje skripte je blokirano. Zadana vrijednost;
AllSigned - dopušteno je izvršavanje skripti s digitalnim potpisom;
RemoteSigned - skripte pripremljene na lokalnom računalu mogu se pokretati bez ograničenja, skripte preuzete s interneta - samo uz digitalni potpis;
Neograničeno - dopušteno je izvršavanje bilo koje skripte. Prilikom pokretanja nepotpisane skripte koja je preuzeta s interneta, program može zahtijevati potvrdu;
Premosnica - ništa nije blokirano, ne pojavljuju se upozorenja ili zahtjevi.

Obično je za nesmetano izvršavanje skripti dovoljno postaviti vrijednost na RemoteSigned. Trenutnu vrijednost možete promijeniti pomoću naredbe Set-ExecutionPolicy, na primjer:

Set-ExecutionPolicy RemoteSigned -force

Bilješka. Ako je politika izvršavanja navedena u naredbi u sukobu pravila grupe, tada će parametar biti zapisan u registar, ali neće imati nikakvog učinka.

Zadano izvršavanje skripte Windows PowerShell zabranjeno u sustavu. Iz sigurnosnih razloga sve PowerShell skripte moraju biti digitalno potpisane. ovu metodu zove - politika izvršenja. Ako skripta ne ispunjava ovaj uvjet, izvršava se PowerShell skripte zabranjeno u sustavu. To je prvenstveno zbog činjenice da skripta može sadržavati zlonamjerni kod koji može naštetiti operativnom sustavu.


PowerShell ima nekoliko načina izvršavanja koji određuju koju vrstu koda je dopušteno izvoditi. Postoji 5 različitih načina izvršenja:

Ograničen
Zadana vrijednost. Izvršenje bilo koje skripte je blokirano, a rad interaktivnih naredbi je dopušten.
Sve Potpisano
Dopušteno je izvršavanje skripti koje imaju digitalni potpis.
Daljinski potpisan
Lokalne skripte rade bez potpisa. Sve preuzete skripte moraju biti digitalno potpisane.
Neograničen
Dopušteno je izvršavanje bilo koje skripte. Prilikom pokretanja nepotpisane skripte koja je preuzeta s interneta, program može zahtijevati potvrdu.
Zaobići
Ništa nije blokirano, ne pojavljuju se nikakva upozorenja ili zahtjevi.

Zadani način rada za PowerShell je "Ograničeno". U ovom načinu rada PowerShell radi kao interaktivna ljuska. Ako prije niste konfigurirali PowerShell, umjesto skripte koja se izvodi, vidjet ćete poruku o pogrešci ispisanu crvenim fontom kao na slici ispod.

Najsigurniji način za rješavanje ovog problema je promijeniti politiku izvršavanja na neograničenu, pokrenuti skriptu i zatim se vratiti na ograničenu politiku.

Za promjenu pravila izvršavanja na neograničeno, koristite PowerShell konzolu s administratorskim pravima i pokrenite sljedeću naredbu:

Y (Da)

Sada možete pokrenuti skriptu. Međutim, izlažete sustav ozbiljnom riziku, pa kada se skripta završi s izvođenjem, svakako vratite politiku izvršavanja na ograničeni način rada. To možete učiniti pomoću sljedeće naredbe:

Nakon pokretanja naredbe, od vas će se tražiti da potvrdite promjenu politike izvršavanja. odgovorit ćemo Y (Da)

Izvršenje bilo koje skripte je blokirano. Zadana vrijednost.

Set-ExecutionPolicy Ograničeno

Dopušteno je izvršavanje skripti koje imaju digitalni potpis.

Skripte pripremljene na lokalnom računalu mogu se pokretati bez ograničenja, skripte preuzete s interneta - samo ako imaju digitalni potpis.

Set-ExecutionPolicy RemoteSigned

Dopušteno je izvršavanje bilo koje skripte. Prilikom pokretanja nepotpisane skripte koja je preuzeta s interneta, program može zahtijevati potvrdu.

Set-ExecutionPolicy Unrestricted

Ništa nije blokirano, ne pojavljuju se nikakva upozorenja ili zahtjevi.

Za pokretanje gornjih naredbi bez potvrde promjene upotrijebite opciju
-Force, na primjer pokrenite naredbu:

Set-ExecutionPolicy Bypass -Force

Sada, kada izvršavate naredbe, ne morate potvrditi napravljene promjene.