Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Windows 8
  • Dopusti izvršavanje skripte. Pokretanje PowerShell skripti prema rasporedu

Dopusti izvršavanje skripte. Pokretanje PowerShell skripti prema rasporedu

1. Pisanje scenarija

PowerShell skripta (bez obzira na verziju) je tekstualna datoteka s ekstenzijom *.ps1.

Ovdje je primjer jednostavne Power Shell skripte (datoteka systemInfo.ps1):

# Dohvaćanje WMI objekta za operativni sustav

Get-WmiObject Win32_OperatingSystem

Ova se datoteka može izraditi i uređivati, na primjer, u FAR menadžer.

Bilješkataj FAR Manager, iako može raditi u Power Shell konzoli, izvršava skripte ispod sebe u okruženju obične Windows konzole cmd . Odnosno, FAR Manager se može koristiti samo za stvaranje i uređivanje PowerShell skripti, ali ne i za njihovo pokretanje. Ali prije nego što se razočarate, pročitajte točku 3.

2. Pokretanje skripte

Skripta se mora izvršiti s Power Shell konzole, a ne s uobičajene Windows konzola. U Power Shell konzoli potrebno je otići u direktorij u kojem se nalazi skripta (komandama CD ), a zatim pokrenite samu skriptu, pazeći da uključite znakove ispred nje".\" . Na primjer, imamo put do datoteke skripte d:\work\systemInfo.ps1 . Tada će naredbe za pokretanje izgledati ovako:

CD\

rad na cd-u

.\systemInfo.ps1

ili ovako (samo navedite puni put do skripte):

d:\work\systemInfo.ps1

Najvjerojatnije će se prilikom pokretanja skripte pojaviti sljedeća pogreška:

Datoteka D:\work\systemInfo.ps1 ne može se učitati jer izvršavanje skripte nije dopušteno na ovom sustavu. Upišite "get-help about_signing" za više informacija.

redak: 1 znak: 18

CategoryInfo: NotSpecified: (:), PSSecurityException

FullyQualifiedErrorId: RuntimeException

Pogreška se pojavljuje zbog činjenice da je prema zadanim postavkama omogućena maksimalna sigurnosna politika u Power Shellu, što vam to omogućuje PowerShell naredbe V naredbeni redak, ali vam ne dopušta izvršavanje skripte s PowerShell naredbama u istoj naredbenoj liniji.

Riješiti pokrenuti PowerShell skripte, morate stvoriti *. bat datoteka, na primjer enableScript.bat sa sljedećim sadržajem:

powershell -Command Set-ExecutionPolicy RemoteSigned

Ova *.bat datoteka može se izvršiti u bilo kojoj konzoli: bilo u PowerShell-u ili u običnoj konzoli cmd . Nakon izvršavanja ove datoteke, skripte PowerShell pokrenut će se u konzoli PowerShell.

3. Pokretanje PowerShell-a-skripta iz obične Windows cmd konzole

Skripta PowerShell također se može izvršiti iz obične Windows konzole. Da biste to učinili, možete koristiti naredbu:

Powershell -Datoteka ./systemInfo.ps1

Na ovaj način možete izvršavati skripte izravno iz FAR Managera i one će raditi.

Ali ovdje postoji mala suptilnost. Parametar-Datoteka pali samo na lokalnim stazama, čak i ako je staza relativna"./" . To jest, ako *.ps1 - datoteka je na lokalnom disku C: ili D: , tada će takav poziv funkcionirati. Ali ako pokušate izvršiti skriptu koja se nalazi na resursu domene, skripta neće biti pronađena. Možda će se ovo popraviti sljedeće verzije PowerShell.

Zadano izvršavanje skripte Windows PowerShell zabranjeno u sustavu. Sve iz sigurnosnih razloga PowerShell skripte moraju biti digitalno potpisani, 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.

Najviše na siguran način Rješenje ovog problema je promijeniti politiku izvršavanja na neograničeno, pokrenuti skriptu i zatim se vratiti na ograničenu politiku.

Da biste promijenili pravilo izvršavanja na neograničeno, upotrijebite 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 skripta završi, svakako vratite politiku izvršavanja na ograničen 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 lokalno računalo, možete pokrenuti bez ograničenja, skripte preuzete s interneta - samo ako imate 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.

Ima ih nekoliko na razne načine pokretanje skripte, u nastavku su glavni:

  1. Pokreni PowerShell i u njoj pokrenite skriptu (unesite put do datoteke i naziv datoteke, npr. ovako: C:\Scripts\test.ps1 ili idite u mapu skripte naredbom cd C:\Scripts i pokrenite je s naredbom.\test.ps1) Školjka se može pronaći i pokrenuti na mnogo načina. Jedan način je kroz izbornik Start. Za Windows 7 - trebate ići na "Svi programi" - "Dodaci" - "Windows PowerShell" i pokrenuti ljusku "Windows PowerShell". Za Windows 10 - trebate pronaći grupu sa slovom "W" i u njoj ćete pronaći "Windows PowerShell".
  2. Pokreni "Integrirano okruženje" Windows skripte PowerShell ISE" je program - razvojno okruženje koje vam omogućuje uređivanje i ispravljanje pogrešaka u PowerShell skriptama, koje je također standardno dostupno uz sam PowerShell. Nakon što ga pokrenete, samo trebate kliknuti gumb "Otvori" ili otići na izbornik Datoteka - Otvori i odaberite potrebna skripta, zatim pritisnite F5 ili gumb "Pokreni skriptu" Windows PowerShell ISE možete pronaći na istom mjestu kao i PowerShell - u izborniku Start.
  3. Pokrenite standardni naredbeni redak i u njemu napiši:
    powershell -datoteka<имя_скрипта> (primjer: powershell -file myscript.ps1)

Ako dosad niste pokretali PowerShell skripte, vjerojatno ćete primiti sljedeću poruku: Ne mogu preuzeti datoteku<имя_скрипта>, budući da je izvršenje skripte zabranjeno za ovaj sustav. Upišite "get-help about_signing" za više informacija. To je zbog činjenice da iz sigurnosnih razloga i sprječavanja slučajnog izvršenja zlonamjerni kod, sve skripte moraju biti digitalno potpisane.

Kako dopustiti izvršavanje nepotpisane PowerShell skripte?

1. U PowerShell-u, prije pokretanja skripte, pokrenite naredbu da omogućite izvođenje nepotpisanih skripti za trenutnu sesiju ljuske:

Set-ExecutionPolicy RemoteSigned -Scope proces

2. Prilikom pokretanja iz standardne naredbene linije koristite parametar -executionpolicy, tj. pokrenite skriptu ovako:

<имя_скрипта>

Obje metode postavljaju politiku samo za trenutnu sesiju, dok se sigurnosna politika za izvršavanje PowerShell skripti zapisana u registru neće mijenjati i ostat će ista. Ako želite promijeniti sigurnosnu politiku izvršavanja skripte na "trajnu", upotrijebite ovu metodu:

3. Dopusti pokretanje zauvijek: Pokrenite PowerShell kao administrator, zatim pokrenite naredbu:

Set-ExecutionPolicy RemoteSigned

Bilješka: Ako je skripta preuzeta s interneta, da biste izbjegli zahtjev za potvrdu pokretanja, morate koristiti Bypass umjesto RemoteSigned - potpuno gašenje sve zahtjeve i upozorenja.

Kako pokrenuti PowerShell skriptu u pozadini?

Da biste to učinili, samo upotrijebite parametar pokretanja -WindowStyle, koji može uzeti sljedeće vrijednosti: Normalno, Minimizirano, Maksimizirano i Skriveno. Dakle, za pokretanje nepotpisane skripte pozadina, trebate pokrenuti naredbu:

powershell -executionpolicy RemoteSigned -WindowStyle Hidden -file<имя_скрипта>

Također možete dodati -NonInteractive ako želite, tako da skripta ne postavlja pitanja. Stoga će se skripta izvršiti nezapaženo od strane korisnika. Budite oprezni kada koristite ovu metodu.

Pokretanje skripte PowerShell s parametrima

Stvarno lansiranje treba izvesti kao da lansirate redovni program ili bat datoteka s parametrima. Na primjer, da biste pokrenuli skriptu s parametrima iz naredbenog retka, možete napisati sljedeću naredbu:

powershell -pravila izvršavanja RemoteSigned -datoteka<имя_скрипта>param1 param2 "drugi tekstualni parametar"

U samoj skripti ove parametre možete dobiti ovako:

Param ($var1, $var2, $var3) echo $var1, $var2, $var3

U PowerShell ISE, možete pokrenuti skriptu s parametrima na isti način koristeći naredbeno okno.

Kako pokrenuti PowerShell skriptu pomoću prečaca?

Ovaj se zadatak može izvršiti na dva načina:

  1. Napravite bat/cmd datoteku u koju ćete napisati naredbu za pokretanje skripte (pročitali ste gore navedene parametre)
  2. Stvorite prečac za PowerShell koji se nalazi u mapi c:\Windows\System32\WindowsPowerShell\v<версия>\ i u svojstvima prečaca u polju "Objekt" dodajte potrebne parametre.

Tako, na primjer, za pokretanje powershell skripte kada se korisnik prijavi, možete jednostavno stvoriti prečac kao što je opisano u točki 2 i postaviti ga u startup. Također, stvaranje prečaca pomoću jedne od gore navedenih metoda omogućit će vam jednostavno pokretanje skripte kao administratora ili bilo kojeg drugog korisnika kao običnog programa.

PowerShell skriptni jezik - prilično moćan alat za rješavanje raznih problema, ali može se koristiti ne samo za dobre stvari, već i za štetu, stoga ga koristite mudro;)

Većina postojećih odgovora objašnjava kako, ali vrlo malo objašnjava zašto. I prije nego što počnete izvršavati kod stranaca na Internetu, posebno kod koji onemogućuje sigurnosne mjere, morate točno razumjeti što radite. Dakle, evo malo više detalja o ovom problemu.

Političari Windows izvršenje PowerShell vam omogućuje da definirate uvjete pod kojima Windows PowerShell učitava konfiguracijske datoteke i pokreće skripte.

Pogodnosti koje su navedene u Osnovama PowerShell - Pravila izvršavanja i potpisivanje koda:

  • Kontrola izvršenja. Upravljajte razinom povjerenja za izvršavanje skripte.
  • Zapovjedi Highjack. Sprječavanje ulaska naredbi na moj način.
  • Identifikacija. Je li skriptu izradio i potpisao programer kojem vjerujem i/ili je potpisana certifikatom ovlaštenog za izdavanje certifikata kojem vjerujem.
  • Integritet. Skripte se ne mogu mijenjati malware ili zlonamjernih korisnika.

Za provjeru trenutne politike izvršavanja, možete pokrenuti Get-ExecutionPolicy. Ali vjerojatno ste ovdje jer to želite promijeniti.

Da biste to učinili, pokrenut ćete cmdlet Set-ExecutionPolicy.

Kada ažurirate svoju politiku izvršenja, morate donijeti dvije važne odluke.

Vrsta pravila izvršenja:

  • Ograničen† - Nikakva skripta ne može se pokrenuti na sustavu putem lokalne, udaljene ili preuzete datoteke.
  • Svi Potpisani. Sve pokrenute skripte zahtijevaju digitalni potpis.
  • RemoteSigned- sve udaljene skripte (UNC) ili one preuzete moraju biti potpisane.
  • Neograničen- nije potreban potpis za bilo koju vrstu skripte.

Opseg nove promjene

  • LocalMachine† - Politika izvršavanja utječe na sve korisnike računala.
  • Trenutni korisnik. Politika izvršavanja utječe samo na trenutnog korisnika.
  • Postupak. Politika izvršenja utječe samo na trenutni Windows proces PowerShell.

† = Zadana vrijednost

Na primjer: ako želite promijeniti pravilo u RemoteSigned samo za CurrentUser, pokrenuli biste sljedeću naredbu:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Bilješka. Da biste promijenili politiku izvršavanja morate pokrenuti PowerShell kao administrator. Ako ste u normalni mod i pokušate promijeniti politiku izvršavanja, dobit ćete sljedeću pogrešku:

Pristup ključu registra "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell" je odbijen. Da biste promijenili politiku izvršavanja za zadani opseg (LocalMachine), pokrenite Windows PowerShell s opcijom Pokreni kao administrator.

Ako želite pooštriti unutarnja ograničenja za vlastite skripte koje nisu preuzete s Interneta (ili barem, ne sadrže UNC metapodatke), možete prisiliti pravilo da pokreće potpisane skripte. Da biste potpisali vlastite skripte, možete slijediti upute u članku Scotta Hanselmana Potpisivanje PowerShell skripti.

Bilješka. Većina ljudi može dobiti ovu pogrešku kada otvori Powershell jer prva stvar koju PS pokušava učiniti kada se pokrene je pokrenuti skriptu svog korisničkog profila, koja postavlja vaše okruženje, ali vama se to sviđa.

Datoteka se obično nalazi u mapi

%UserProfile%\My Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1

možeš naći točna lokacija pokretanjem varijable powershell

$profil

Ako u profilu nema ničega do čega vam je stalo i ne želite brinuti o svojim sigurnosnim postavkama, možete ga jednostavno izbrisati i powershell neće pronaći ništa što ne može učiniti.

Pozdrav svima, danas vam želim reći kako pokrenuti PowerShell skriptu u sustavu Windows. Zamislite situaciju: napisali ste skriptu koja uvelike pojednostavljuje prikaz informacija na Active Directory, otvorite Powershell snap-in, unesete put do svoje skripte, pritisnete enter i dobijete pogrešku.

Ne mogu preuzeti datoteku<путь к вашему файлу>, budući da je izvršenje skripte zabranjeno za ovaj sustav. Upišite "get-help about_signing" za više informacija.

Pogledajmo kako to riješiti.

PowerShell ima niz načina izvršavanja koji određuju koju vrstu koda je dopušteno izvoditi. Sve to kontrolira ključ registra koji se nalazi u HKLM-u. postoje 4 drugačiji način rada pogubljenja:

ograničeno(Ograničeno): Zadana politika izvršavanja ne dopušta pokretanje skripti i dopušta samo pokretanje interaktivnih naredbi.

Sve potpisano(Svi potpisani): Omogućuje pokretanje svih skripti. Istina, sve skripte i konfiguracijske datoteke moraju biti potpisane od strane izdavača kojem vjerujete; ovaj način rada izlaže vas riziku pokretanja potpisanih (ali zlonamjernih) skripti nakon što primite potvrdu povjerenja od izdavača.

Izbrisano potpisano(Daljinski potpisan): Lokalne skripte rade bez potpisa. Sve preuzete skripte moraju biti digitalno potpisane.

Neograničen(Neograničeno): Sve skripte i konfiguracijske datoteke primljene od komunikacijskih aplikacija, kao što su Microsoft Outlook, Internet Explorer, Outlook Express i Windows Messenger rade nakon potvrde da razumijete da datoteka dolazi s Interneta; nikakav digitalni potpisi nije obavezno; Ovaj način vas izlaže riziku pokretanja nepotpisanih, zlonamjernih skripti.

Prema zadanim postavkama PowerShell koristi ograničeni način rada. U ovom načinu rada PowerShell radi samo kao interaktivna ljuska. Ne dopušta pokretanje skripti i učitava samo konfiguracijske datoteke koje je potpisao izdavač kojem vjerujete.

Dopusti pokretanje PowerShell skripti

Da biste pokrenuli skripte koje sami izradite, morate dopustiti pokretanje nepouzdanih skripti pomoću naredbe Set-ExecutionPolicy daljinski potpisan i potvrda (Pažnja!!! Da biste pokrenuli ovu naredbu, morate pokrenuti PowerShell s administratorskim pravima). Nakon toga možete ponovo pokrenuti skriptu.

Kada se to od vas zatraži, pritisnite Y da biste dopustili izvršavanje skripte. Nakon ovih manipulacija, moći ćete pokrenuti svoju skriptu.

Najbolji članci na temu