Pozdrav svima, danas želim da vam kažem kako da pokrenete PowerShell skriptu u Windows-u. Zamislite situaciju: napisali ste skriptu koja uvelike pojednostavljuje prikaz informacija na Active Directory, otvorite Powershell snap-in, odredite putanju do vaše skripte, pritisnete enter i dobijete grešku.

Nije moguće preuzeti fajl<путь к вашему файлу>, budući da je izvršavanje skripte zabranjeno za ovaj sistem. Unesite "get-help about_signing" za više informacija.

Da vidimo kako to riješiti.

PowerShell ima niz načina izvršavanja koji određuju koji tip koda je dozvoljen za pokretanje. Sve ovo kontroliše ključ registratora koji živi u HKLM-u. Postoje 4 različita načina izvršavanja:

Ograničeno(Ograničeno): Podrazumevana politika izvršavanja ne dozvoljava pokretanje skripti i dozvoljava samo pokretanje interaktivnih komandi.

Svi potpisani(Sve potpisane): Omogućava 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 dobijete potvrdu o povjerenju u izdavača.

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

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

Po defaultu, PowerShell koristi ograničeni način rada. U ovom načinu rada PowerShell radi samo kao interaktivna ljuska. Ne dozvoljava pokretanje skripti i učitava samo konfiguracijske datoteke koje je potpisao izdavač kojem vjerujete.

Dozvolite pokretanje powershell skripti

Da biste pokrenuli skripte koje sami kreirate, morate dozvoliti nepouzdanim skriptama da se izvode pomoću naredbe Set-ExecutionPolicy remotesigned i potvrdu (Pažnja!!! Da biste pokrenuli ovu naredbu, morate pokrenuti PowerShell sa administratorskim pravima). Nakon toga, možete ponovo pokrenuti skriptu.

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

Zadano izvršavanje skripte Windows PowerShell zabranjeno u sistemu. Sve iz sigurnosnih razloga PowerShell skripte mora biti potpisan digitalnim potpisom, ova metoda se zove - politika izvršenja. Ako skripta ne ispunjava ovaj uslov, tada je zabranjeno pokretanje PowerShell skripti na sistemu. To je prvenstveno zbog činjenice da skripta može sadržavati zlonamjerni kod koji može naštetiti operativnom sistemu.


PowerShell ima nekoliko načina izvršavanja koji određuju koji tip koda je dozvoljen za pokretanje. Postoji 5 različitih načina izvršavanja:

Ograničeno
Zadana vrijednost. Izvršavanje bilo koje skripte je blokirano i rad interaktivnih naredbi je dozvoljen.
Sve potpisano
Dozvoljeno je izvršavanje skripti koje imaju digitalni potpis.
Daljinski potpisan
Lokalne skripte rade bez potpisa. Sve preuzete skripte moraju biti digitalno potpisane.
Neograničeno
Dozvoljeno je izvršavanje bilo koje skripte. Prilikom pokretanja nepotpisane skripte koja je preuzeta s interneta, program može zahtijevati potvrdu.
Bypass
Ništa nije blokirano, ne pojavljuju se upozorenja ili zahtjevi.

Zadani način rada za PowerShell je "ograničeno". U ovom načinu rada PowerShell radi kao interaktivna ljuska. Ako ranije niste konfigurisali PowerShell, umjesto da se skripta pokrene, vidjet ćete poruku o grešci napisanu crvenim fontom kao na slici ispod.

Najviše na bezbedan način Rješenje ovog problema je da promijenite politiku izvršavanja na neograničeno, pokrenete skriptu, a zatim se vratite na ograničenu politiku.

Da promijenite politiku 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 sistem ozbiljnom riziku, pa kada se skripta završi, obavezno 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. Mi ćemo odgovoriti Y (Da)

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

Set-ExecutionPolicy Ograničeno

Dozvoljeno je izvršavanje skripti koje imaju digitalni potpis.

Skripte pripremljene dalje lokalni računar, možete pokrenuti bez ograničenja, skripte preuzete sa interneta - samo ako imate digitalni potpis.

Set-ExecutionPolicy RemoteSigned

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

Set-ExecutionPolicy neograničeno

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

Da biste pokrenuli gornje naredbe bez potvrđivanja promjene, koristite opciju
  -Prisilno, na primjer, pokrenite naredbu:

Set-ExecutionPolicy Bypass -Force

Sada, kada izvršavate naredbe, ne morate potvrđivati ​​napravljene promjene.


Pokretanje PowerShell skripte

Ova napomena opisuje kako konfigurirati potrebne parametre za pokretanje PowerShell skripte. Najčešće na prvom startu .ps1 skripte koje vidite sledeće greške:

File nije moguće učitati. File nema digitalni potpis. Skripta se neće izvršiti na sistemu. Da dobijem dodatne informacije, unesite naredbu “Get-Help about_signing”.
Fajl ne može se učitati. Fajl nije digitalno potpisan. Skripta se neće izvršiti na sistemu. Za više detalja pogledajte “Dobijte pomoć o_Signingu”.

Pokrenuti program od nepouzdanog izdavača? File objavio CN= Ovaj izdavač nije označen kao pouzdan od strane ovog sistema. Trebali biste pokretati skripte samo od pouzdanih izdavača.
[V] Nikada ne izvršavaj [D] Ne izvršavaj [R] Izvrši jednom [A] Uvijek izvrši [?] Pomoć (podrazumevano "D"):
Želite li pokrenuti softver ovog nepouzdanog izdavača? Fajl objavljuje CN= Ovaj izdavač nije pouzdan na vašem sistemu. Pokreni samo skripte od pouzdanih izdavača.
[V] Nikada ne pokreni [D] Ne pokreni [R] Pokreni jednom [A] Uvijek pokreni [?] Pomoć (podrazumevano je “D”):

Ove greške i poruke su uzrokovane postavkama politike izvršavanja Windowsa PowerShell. Međutim, ne biste trebali misliti da ovi parametri zapravo povećavaju sigurnost OS-a, jer će kod i dalje raditi ako ga kopirate u PowerShell konzolu. Dakle, sigurnosne postavke mogu biti onemogućene - one štite samo od slučajnih radnji. Stoga obično ovaj problem odlučiti kao tim:

Set-ExecutionPolicy Unrestricted LocalMachine

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

get-executionpolicy -list

Obim ExecutionPolicy
—— —————
MachinePolicy Neograničeno
UserPolicy Nedefinisano
Proces RemoteSigned
CurrentUser AllSigned
LocalMachine Ograničeno

Ovo pravilo može imati 6 vrijednosti:

Ograničeno(Pravilo se izvršava prema zadanim postavkama. Na primjer, ako su sva područja aplikacije postavljena na Nedefinirano)
— Dozvoljava pojedinačne komande, ali skripte se ne mogu izvršiti.
- Sprečava izvršavanje svih datoteka skripte, uključujući datoteke formata i konfiguracije (PS1XML), datoteke skripte modula (PSM1) i Windows PowerShell profile (PS1).

AllSigned

- Zahtijeva da sve skripte i konfiguracijske datoteke budu potpisane od strane pouzdanog izdavača, uključujući skripte pripremljene na lokalnom računalu.
- 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šavanje skripti je dozvoljeno.
— Zahtijeva da skripte i konfiguracijske datoteke preuzete s interneta budu digitalno potpisane od strane pouzdanog izdavača (uključujući email i programi za razmjenu trenutnih poruka).
- Ne zahteva prisustvo digitalni potpisi za skripte koje se izvršavaju i napisuju na lokalnom računaru (ne preuzimaju se sa Interneta).
— Postoji rizik od izvršavanja potpisanih, ali zlonamjernih skripti.

Neograničeno
- 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.

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

Nedefinisano
— Trenutni opseg nema postavljenu politiku izvršavanja.
- Ako je politika izvršavanja u svim opsegima Nedefinirana, politika izvršavanja je Ograničena, što je zadana politika izvršavanja.

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

MachinePolicy I UserPolicy su postavljene AD politikama ili lokalnim politikama datog računara.
Proces— opseg primjene: tekuća sesija. Pomoć kaže da je njegova vrijednost pohranjena u varijablu $PSExecutionPolicyPreference, međutim, nije bilo moguće dobiti/promijeniti vrijednost ove politike putem varijable. Promjene napravljene u ovoj oblasti aplikacije neće utjecati na druge sesije.
CurrentUser— opseg trenutnog korisnika. Njegova vrijednost je pohranjena u ključu registratora HKEY_CURRENT_USER (“HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\ExecutionPolicy”).
LocalMachine— opseg primjene za sve korisnike trenutnog računara. Pohranjen je u ključu registratora HKEY_LOCAL_MACHINE("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics\ExecutionPolicy").

Tim get-executionpolicy postoji parametar -Scope. Koristeći ovaj parametar, možete odabrati opseg za koji će se prikazati vrijednost politike.

Get-ExecutionPolicy -scope Proces

Rezultat pokretanja cmdleta: RemoteSigned

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

Obim ExecutionPolicy
—— —————
MachinePolicy Neograničeno
UserPolicy Nedefinisano
Proces RemoteSigned
CurrentUser AllSigned
LocalMachine Ograničeno

U trenutnoj sesiji, rezultirajuća politika će biti Neograničena.

Da biste saznali vrijednost politike izvršavanja skripte za datu sesiju, trebate koristiti Get-ExecutionPolicy cmdlet bez parametara.

Zaključak: Neograničeno

Promjena politike izvršavanja skripte PowerShell:

Da biste promijenili vrijednost politika izvršavanja PowerShell skripte, postoji cmdlet Set-ExecutionPolicy.
Ovaj cmdlet ima sljedeće parametre:

-ExecutionPolicy
Označava vrijednost politike. Može imati sljedeće vrijednosti: Restricted, AllSigned, RemoteSigned, Unrestricted, Bypass, Undefined. Ovaj parametar potrebno je navesti. Ako nije navedeno, komadlet će tražiti vrijednosti u vremenu izvođenja.

zaključak:
Odredite vrijednosti za sljedeće parametre:
Politika izvršenja:

-Scope
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 Proces

Set-ExecutionPolicy neograničeni proces

-Sila
Uz ovaj parametar, cmdlet neće zahtijevati korisničku potvrdu. na primjer:

Set-ExecutionPolicy Neograničeni proces -Force

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

-Potvrdi
Ako vam, naprotiv, jedna potvrda nije dovoljna. Možete odrediti parametar Confirm i imat ćete još jedan, dodatni, zahtjev za potvrdu vaših 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 "Neograničeno".
[Y] Da - Y [A] Da za sve - A [N] Ne - N [L] Ne za sve - L [S] Obustavi - S [?] Pomoć (podrazumevana vrijednost je "Y"):

Promjena politike izvršenja
Politika izvršavanja štiti vaš računar od nepouzdanih skripti. Promjena politike izvršavanja može ugroziti sigurnost sistema, 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ć (podrazumevana vrijednost je "Y"):. exe -executionpolicy Neograničeno

Get-ExecutionPolicy -list

Rezultat izvršenja:

Obim ExecutionPolicy
—— —————
MachinePolicy Neograničeno
UserPolicy Nedefinisano
Proces RemoteSigned
CurrentUser AllSigned
LocalMachine Ograničeno

Promjena postavki politike pokretanja skripte pomoću grupnih politika.

U grupnoj politici, parametar koji kontrolira pokretanje skripti nalazi se duž putanje:

Za MachinePolicy:

Konfiguracija računara/Pravila/Administrativni predlošci/Windows komponente/Windows PowerShell

Konfiguracija računara/Administrativni predlošci/Windows komponente/Windows PowerShell

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

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

Parametar Politika izvršavanja može imati 3 vrijednosti.

Informacije sadržane na ovoj stranici prvenstveno se obraćamo korisnicima Microsoft Internet Explorer 5.x i 6.x.- najčešći pretraživači na Internetu. Važno je napomenuti da se naša stranica adekvatno prikazuje u drugim pretraživačima. Međutim, po našem mišljenju, pristalice Mozilla Firefox i Opera su entuzijasti i poznavaoci vrhunskog softver, te stoga nije potreban savjet o njegovom postavljanju.

JavaScript Ovo je skriptni jezik koji vam omogućava da internet stranicu učinite interaktivnom, tj. "sposoban da komunicira" sa korisnikom.

JavaScript skripte preuzeto sa internet stranice na računar korisnika i izvršeno na njemu. Ova činjenica stvara potencijalnu pretnju za računar korisnika! Kao i svaka druga datoteka preuzeta sa nepoznate stranice, JavaScript skripta može sadržavati izvršni kod koji može naštetiti korisniku - na primjer, otvaranje neovlašćeni pristup na njegove povjerljive informacije. To je razlog zašto pretraživači pružaju mogućnost onemogućavanja izvršavanja JavaScripta.

Nažalost, nijedan moderni pretraživač vam ne dozvoljava da selektivno (kao što je slučaj sa kolačićima) dozvolite učitavanje JavaScript skripti samo sa određenih sajtova, dok ne dozvoljavate sve druge. Morate prihvatiti da za funkcioniranje JavaScript skripte mora biti omogućena postavka "Run Java Application Scripts" za sve Internet stranice.

Koristimo JavaScript skripte organizirati popunjavanje različitih obrazaca na našoj web stranici (na primjer, obrazac za registraciju), prikazati mini savjete o korištenju naše web stranice, izraditi naš jelovnik i katalog proizvoda.

Konfigurisanje JavaScript sigurnosnih postavki u Microsoft Internet Explorer 6.x

Konfigurisanje JavaScript sigurnosnih postavki u Microsoft Internet Explorer 5.x

Ima ih nekoliko na razne načine pokretanje skripte, ispod su glavne:

  1. Pokrenite PowerShell i pokrenite skriptu u njoj (unesite putanju do datoteke i naziv datoteke, na primjer, ovako: C:\Scripts\test.ps1, ili idite u mapu skripte naredbom cd C:\Scripts i pokrenite je sa naredbom.\test.ps1) Shell se može pronaći i pokrenuti na mnogo načina. Jedan način je kroz Start meni. Za Windows 7 - trebate otići na "Svi programi" - "Dodatna oprema" - "Windows PowerShell" i pokrenuti "Windows PowerShell" ljusku. Za Windows 10 - morate pronaći grupu sa slovom "W" iu njoj ćete pronaći "Windows PowerShell".
  2. Pokrenite "Windows PowerShell ISE" je program - razvojno okruženje koje vam omogućava da uređujete i otklanjate greške u PowerShell skriptama, koje je takođe podrazumevano dostupno zajedno sa samim PowerShellom. Nakon što ga pokrenete, trebate samo kliknuti na dugme "Otvori" ili otići u meni Datoteka - Otvori i odabrati željenu skriptu, a zatim pritisnuti F5 ili dugme "Pokreni skriptu" na istom mestu kao i Windows PowerShell ISE ljuska PowerShell - u meniju Start.
  3. Pokrenite standardnu ​​komandnu liniju i napiši u njemu:
    powershell -datoteka<имя_скрипта> (primjer: powershell -datoteka myscript.ps1)

Ako ranije niste pokrenuli PowerShell skripte, vjerovatno ćete dobiti sljedeću poruku: Nije moguće preuzeti fajl<имя_скрипта>, budući da je izvršavanje skripte zabranjeno za ovaj sistem. Unesite "get-help about_signing" za više informacija. To je zbog činjenice da iz sigurnosnih razloga i kako bi se spriječilo slučajno izvršenje zlonamjernog koda, sve skripte moraju biti digitalno potpisane.

Kako dozvoliti izvršavanje nepotpisane PowerShell skripte?

1. U PowerShell-u, prije pokretanja skripte, pokrenite naredbu da dozvolite izvršavanje nepotpisanih skripti za trenutnu sesiju ljuske:

Set-ExecutionPolicy RemoteSigned -Scope Proces

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

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

Oba metoda postavljaju politiku samo za trenutnu sesiju, dok se sigurnosna politika za izvršavanje PowerShell skripti zapisanih u registratoru neće mijenjati i ostaće ista. Ako želite da promijenite sigurnosnu politiku izvršavanja skripte u "stalnu", onda koristite ovu metodu:

3. Dozvolite lansiranje zauvijek: Pokrenite PowerShell kao administrator, a zatim pokrenite naredbu:

Set-ExecutionPolicy RemoteSigned

Napomena: Ako je skripta preuzeta s interneta, tada kako biste izbjegli zahtjev za potvrdom pokretanja, morate koristiti Bypass umjesto RemoteSigned - potpuno onemogućiti sve zahtjeve i upozorenja.

Kako pokrenuti PowerShell skriptu u pozadini?

Da biste to učinili, samo koristite parametar pokretanja -WindowStyle, koji može imati sljedeće vrijednosti: Normal, Minimized, Maximized i Hidden. Dakle, da biste pokrenuli nepotpisanu skriptu u pozadini, morate pokrenuti naredbu:

powershell -politika izvršenja RemoteSigned -WindowStyle Hidden -file<имя_скрипта>

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

Pokretanje PowerShell skripte s parametrima

Stvarno lansiranje bi trebalo biti obavljeno kao da lansirate redovni program ili bat fajl sa parametrima. Na primjer, da biste pokrenuli skriptu s parametrima iz komandne linije, možete napisati sljedeću naredbu:

powershell -executionpolicy RemoteSigned -file<имя_скрипта>param1 param2 "još jedan tekstualni parametar"

U samoj skripti možete dobiti ove parametre ovako:

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

U PowerShell ISE-u možete pokrenuti skriptu sa parametrima na isti način pomoću komandnog okna.

Kako pokrenuti PowerShell skriptu koristeći prečicu?

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

  1. Kreirajte bat/cmd fajl u koji ćete napisati naredbu za pokretanje skripte (pročitali ste gore navedene parametre)
  2. Kreirajte prečicu do PowerShell-a, koja se može naći u folderu c:\Windows\System32\WindowsPowerShell\v<версия>\ i u svojstva prečice u polju "Objekat" dodajte potrebne parametre.

Tako, na primjer, da biste pokrenuli powershell skriptu kada se korisnik prijavi, možete jednostavno kreirati prečicu kao što je opisano u tački 2 i postaviti je u startup. Također, kreiranje prečice pomoću jedne od gore navedenih metoda omogućit će vam da lako pokrenete skriptu kao administrator ili kao bilo koji drugi korisnik kao običan program.

PowerShell skriptni jezik - sasvim moćan alat za rješavanje raznih problema, ali se može koristiti ne samo za dobro, već i za štetu, pa ga pametno koristite;)