Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows 8
  • Lejo ekzekutimin e skriptit. Ekzekutimi i skripteve PowerShell sipas një plani

Lejo ekzekutimin e skriptit. Ekzekutimi i skripteve PowerShell sipas një plani

1. Shkrimi i një skenari

Një skrip PowerShell (pavarësisht nga versioni) është një skedar teksti me shtesë *.ps1.

Këtu është një shembull i një skripti të thjeshtë Power Shell (skedar systemInfo.ps1):

# Merrni objektin WMI për sistemin operativ

Get-WmiObject Win32_OperatingSystem

Ky skedar mund të krijohet dhe modifikohet, për shembull, në menaxherin FAR.

shënimai FAR Manager, megjithëse mund të funksionojë në tastierën e Power Shell, por ekzekuton skriptet nga poshtë vetes në mjedisin e një tastierë të rregullt Windows cmd . Kjo do të thotë, FAR Manager mund të përdoret vetëm për të krijuar dhe modifikuar skriptet PowerShell, por jo për të ekzekutuar. Por përpara se të zhgënjeheni, lexoni pikën 3.

2. Ekzekutoni skriptin

Skripti duhet të ekzekutohet nga tastiera e Power Shell, jo nga tastiera e zakonshme e Windows. Në tastierën Power Shell, duhet të shkoni te drejtoria ku ndodhet skripti (duke përdorur komandat cd ), dhe më pas ekzekutoni vetë skenarin, sigurohuni që të përshkruani personazhet para tij".\" . Për shembull, ne kemi rrugën drejt skedarit të skriptit d:\work\systemInfo.ps1 . Pastaj komandat e nisjes do të duken kështu:

cd\

punim cd

.\systemInfo.ps1

ose si kjo (thjesht tregoni rrugën e plotë drejt skriptit):

d:\work\systemInfo.ps1

Me shumë mundësi, kur ekzekutoni skriptin, do të shfaqet gabimi i mëposhtëm:

Skedari D:\work\systemInfo.ps1 nuk mund të ngarkohet sepse skriptimi nuk lejohet në këtë sistem. Shkruani "get-help about_signing" për më shumë informacion.

varg: 1 karakter: 18

Info për kategorinë: Nuk është specifikuar: (:) , PSSecurityException

FullyQualifiedErrorId: RuntimeException

Gabimi shfaqet për faktin se, si parazgjedhje, Power Shell ka të aktivizuar politikën maksimale të sigurisë, e cila ju lejon të ekzekutoni komandat PowerShell në vijën e komandës, por nuk ju lejon të ekzekutoni një skript me komanda PowerShell në të njëjtën linjë komande .

Për të mundësuar ekzekutimin e skripteve PowerShell, duhet të krijoni një skedar *.bat, për shembull, enableScript.bat me përmbajtjen e mëposhtme:

powershell -Command Set-ExecutionPolicy RemoteSigned

Ky skedar *.bat mund të ekzekutohet në çdo tastierë: edhe në PowerShell, madje edhe në të zakonshmen cmd . Pas ekzekutimit të këtij skedari, skriptet PowerShell do të ekzekutohen në tastierën PowerShell.

3. Ekzekutimi i një skripti PowerShell nga një tastierë e rregullt Windows cmd

Ju gjithashtu mund të ekzekutoni një skript PowerShell nga një tastierë e zakonshme Windows. Për ta bërë këtë, mund të përdorni komandën:

Powershell -File ./systemInfo.ps1

Kështu, ju mund të ekzekutoni skriptet direkt nga FAR Manager, dhe ato do të funksionojnë.

Por këtu ka një hollësi të vogël. Parametri- Dosja ndizet vetëm në shtigjet lokale, edhe nëse rruga është relative"./" . Kjo do të thotë, nëse *.ps1 - skedari është në diskun lokal C: ose D: , atëherë kjo thirrje do të funksionojë. Por nëse përpiqeni të ekzekutoni një skript të vendosur në një burim domeni, skripti nuk do të gjendet. Ndoshta kjo do të rregullohet në versionet e ardhshme të PowerShell.

Ekzekutimi i parazgjedhur i skriptit Windows PowerShell të ndaluara në sistem. Për arsye sigurie, të gjithë skriptet PowerShell duhet të nënshkruhen në mënyrë dixhitale, kjo metodë quhet - politikën e ekzekutimit. Nëse skripti nuk e plotëson këtë kusht, atëherë ekzekutimi i skripteve PowerShell në sistem është i ndaluar. Kjo është kryesisht për shkak të faktit se skripti mund të përmbajë kod me qëllim të keq që mund të dëmtojë sistemin operativ.


PowerShell ka disa mënyra ekzekutimi që përcaktojnë se çfarë lloj kodi lejohet të ekzekutohet. Ekzistojnë 5 mënyra të ndryshme ekzekutimi:

I kufizuar
Vlera e paracaktuar. Ekzekutimi i çdo skripti është i bllokuar dhe puna e komandave ndërvepruese lejohet.
Të gjitha të nënshkruara (Të gjitha të nënshkruara)
Lejohet ekzekutimi i skripteve me nënshkrim dixhital.
Nënshkruar në distancë
Skriptet lokale funksionojnë pa nënshkrim. Të gjithë skriptet e shkarkuar duhet të nënshkruhen në mënyrë dixhitale.
I pakufizuar
Lejohet ekzekutimi i çdo skripti. Kur ekzekutoni një skript të panënshkruar që është shkarkuar nga Interneti, programi mund të kërkojë konfirmim.
Bypass
Asgjë nuk është e bllokuar, nuk shfaqen paralajmërime apo kërkesa.

Mënyra e paracaktuar për PowerShell është "I kufizuar". Në këtë mënyrë, PowerShell funksionon si një guaskë ndërvepruese. Nëse nuk e keni konfiguruar më parë PowerShell, atëherë në vend që të ekzekutoni skriptin, do të shihni një mesazh gabimi të shkruar me fontin e kuq si në pamjen e mëposhtme të ekranit.

Mënyra më e sigurt për të zgjidhur këtë problem është ndryshimi i politikës së ekzekutimit në të pakufizuar, ekzekutimi i skriptit dhe më pas kthimi në politikën e kufizuar.

Për të ndryshuar politikën e ekzekutimit në të pakufizuar, përdorni tastierën PowerShell me të drejtat e Administratorit dhe ekzekutoni komandën e mëposhtme:

Y (po)

Tani mund të ekzekutoni skriptin. Megjithatë, ju po e vendosni sistemin në rrezik serioz, kështu që kur skripti përfundon, sigurohuni që ta ndryshoni politikën e ekzekutimit përsëri në modalitetin e kufizuar. Ju mund ta bëni këtë me komandën e mëposhtme:

Pas ekzekutimit të komandës, do t'ju kërkohet të konfirmoni ndryshimin e politikës së ekzekutimit. Ne do të përgjigjemi Y (po)

Ekzekutimi i çdo skripti është i bllokuar. Vlera e paracaktuar.

Set-ExecutionPolicy e kufizuar

Lejohet ekzekutimi i skripteve me nënshkrim dixhital.

Skriptet e përgatitura në kompjuterin lokal mund të ekzekutohen pa kufizime, skriptet e shkarkuara nga Interneti - vetëm nëse kanë një nënshkrim dixhital.

Set-ExecutionPolicy RemoteSigned

Lejohet ekzekutimi i çdo skripti. Kur ekzekutoni një skript të panënshkruar që është shkarkuar nga Interneti, programi mund të kërkojë konfirmim.

Set-ExecutionPolicy e pakufizuar

Asgjë nuk është e bllokuar, nuk shfaqen paralajmërime apo kërkesa.

Për të ekzekutuar komandat e mësipërme pa konfirmuar ndryshimin, përdorni parametrin
-Forco, për shembull ekzekutoni komandën:

Set-ExecutionPolicy Bypass -Force

Tani, kur ekzekutoni komandat, nuk keni nevojë të konfirmoni ndryshimet e bëra.

Ka disa mënyra të ndryshme për të ekzekutuar skriptin, më poshtë janë ato kryesore:

  1. Filloni një PowerShell Shell dhe ekzekutoni skriptin në të (futni shtegun për në skedar dhe emrin e skedarit, për shembull, si kjo: C:\Scripts\test.ps1, ose shkoni te dosja e skriptit me komandën cd C:\Scripts dhe ekzekutoni atë me komandën.\test.ps1) Predha mund të gjendet dhe lëshohet në mënyra të ndryshme. Një mënyrë është përmes menysë Start. Për Windows 7 - duhet të shkoni te "Të gjitha programet" - "Accessories" - "Windows PowerShell" dhe të filloni guaskën "Windows PowerShell". Për Windows 10 - ju duhet të gjeni grupin me shkronjën "W" dhe në të do të gjeni "Windows PowerShell".
  2. Hap "Windows PowerShell ISE"- ky është një program - një mjedis zhvillimi që ju lejon të redaktoni dhe korrigjoni skriptet PowerShell, i cili është gjithashtu aty si parazgjedhje së bashku me vetë PowerShell. Pasi ta keni nisur atë, thjesht duhet të klikoni në butonin "Hap" ose të shkoni te menyja File - Hapni dhe zgjidhni skriptin e dëshiruar, më pas shtypni F5 ose butonin "Run Script". Mund të gjeni Windows PowerShell ISE në të njëjtin vend si guaska PowerShell - në menynë Start.
  3. Drejtoni linjën standarde të komandës dhe shkruani në të:
    powershell-skedar<имя_скрипта> (shembull: powershell -file myscript.ps1)

Nëse nuk i keni ekzekutuar më parë skriptet PowerShell, me shumë mundësi do të merrni një mesazh: Skedari nuk mund të ngarkohet<имя_скрипта>sepse ekzekutimi i skriptit nuk lejohet në këtë sistem. Shkruani "get-help about_signing" për më shumë informacion. Kjo për faktin se për arsye sigurie dhe për të parandaluar ekzekutimin aksidental të kodit me qëllim të keq, të gjitha skriptet duhet të nënshkruhen në mënyrë dixhitale.

Si të lejohet ekzekutimi i një skripti të panënshkruar PowerShell?

1. Në PowerShell, përpara se të ekzekutoni skriptin, ekzekutoni një komandë që lejon ekzekutimin e skripteve të panënshkruara për sesionin aktual të guaskës:

Procesi i Set-ExecutionPolicy RemoteSigned -Scope

2. Fillimi nga linja standarde e komandës përdorni opsionin -executionpolicy, d.m.th. ekzekutoni skriptin si kjo:

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

Të dyja metodat vendosin politikën vetëm për sesionin aktual, ndërsa politika e sigurisë së ekzekutimit të skriptit PowerShell e specifikuar në regjistër nuk do të ndryshohet dhe do të mbetet e njëjtë. Nëse dëshironi të ndryshoni politikën e sigurisë së ekzekutimit të skriptit në të përhershme, atëherë përdorni këtë metodë:

3. Lejo nisjen përgjithmonë: ekzekutoni PowerShell si "Administrator", më pas ekzekutoni komandën:

Set-ExecutionPolicy RemoteSigned

Shënim: Nëse skripti është shkarkuar nga Interneti, atëherë për të shmangur një kërkesë për të konfirmuar nisjen, duhet të përdorni Bypass në vend të RemoteSigned - çaktivizimin e plotë të çdo kërkese dhe paralajmërimi.

Si të ekzekutoni një skript PowerShell në sfond?

Për ta bërë këtë, thjesht përdorni parametrin e nisjes -WindowStyle, i cili mund të marrë vlerat e mëposhtme: Normal, Minimized, Maksimizuar dhe Hidden. Kështu, për të ekzekutuar një skript të panënshkruar në sfond, duhet të ekzekutoni komandën:

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

Ju gjithashtu mund të shtoni -NonInteractive nëse dëshironi, në mënyrë që skripti të mos bëjë pyetje. Kështu, skripti do të ekzekutohet në mënyrë të padukshme për përdoruesin. Kini kujdes duke përdorur këtë metodë.

Ekzekutimi i një skripti PowerShell me parametra

Në fakt, nisja duhet të bëhet sikur po nisni një program të rregullt ose një skedar bat me parametra. Për shembull, për të ekzekutuar një skript me parametra nga linja e komandës, mund të shkruani komandën e mëposhtme:

powershell -executionpolicy RemoteSigned -skedar<имя_скрипта>param1 param2 "një parametër tjetër teksti"

Në vetë skriptin, mund t'i merrni këto parametra si kjo:

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

Në PowerShell ISE, mund të ekzekutoni një skript me parametra në të njëjtën mënyrë duke përdorur panelin e komandës.

Si të ekzekutoni një skript PowerShell duke përdorur një shkurtore?

Ka dy mënyra për të kryer këtë detyrë:

  1. Krijoni një skedar bat / cmd në të cilin të regjistroni një komandë për të ekzekutuar skriptin (ju keni lexuar parametrat e mësipërm)
  2. Krijo një shkurtore për PowerShell, e cila mund të gjendet në c:\Windows\System32\WindowsPowerShell\v<версия>\ dhe në vetitë e shkurtores në fushën "Objekt" shtoni parametrat e nevojshëm.

Kështu, për shembull, për të ekzekutuar një skript powershell kur një përdorues regjistrohet, thjesht mund të krijoni një shkurtore, siç përshkruhet në paragrafin 2, dhe ta vendosni në ngarkim automatik. Gjithashtu, krijimi i një shkurtoreje duke përdorur një nga metodat e mësipërme do ta bëjë të lehtë ekzekutimin e skriptit si administrator ose në emër të çdo përdoruesi tjetër si një program i rregullt.

Gjuha e skriptimit PowerShell është një mjet mjaft i fuqishëm për zgjidhjen e problemeve të ndryshme, por mund të përdoret jo vetëm për gjëra të mira, por edhe për dëme, prandaj përdorni me mençuri;)

Shumica e përgjigjeve ekzistuese shpjegojnë Si, por shumë pak shpjegojnë pse. Dhe përpara se të filloni të ekzekutoni kodin nga të huajt në internet, veçanërisht kodin që çaktivizon masat e sigurisë, duhet të kuptoni saktësisht se çfarë po bëni. Pra, këtu ka pak më shumë për këtë çështje.

Politikat e ekzekutimit të Windows PowerShell ju lejojnë të përcaktoni kushtet në të cilat Windows PowerShell ngarkon skedarët e konfigurimit dhe ekzekuton skriptet.

Përfitimet që janë renditur Bazat e PowerShell - Politika e Ekzekutimit dhe Nënshkrimi i Kodit:

  • Kontrolli i ekzekutimit. Menaxhoni nivelin e besimit për ekzekutimin e skriptit.
  • Komanda Highjack. Parandalimi i hyrjes së komandës në rrugën time.
  • Identifikimi. A është skripti i krijuar dhe i nënshkruar nga një zhvillues të cilit i besoj dhe/ose i nënshkruar me një certifikatë nga një CA që besoj.
  • Integriteti. Skriptet nuk mund të modifikohen nga malware ose përdorues me qëllim të keq.

Për të kontrolluar politikën aktuale të ekzekutimit, mund të ekzekutoni Get-ExecutionPolicy. Por ju ndoshta jeni këtu sepse doni ta ndryshoni atë.

Për ta bërë këtë, do të ekzekutoni cmdlet Set-ExecutionPolicy.

Kur përditësoni një politikë ekzekutimi, duhet të merrni dy vendime të rëndësishme.

Lloji i politikës së ekzekutimit:

  • I kufizuar† - Asnjë skrip në sistem nuk mund të ekzekutojë skedar lokal, në distancë ose të shkarkuar.
  • Të gjitha të nënshkruara. Të gjithë skriptet e ekzekutimit kërkojnë një nënshkrim dixhital.
  • RemoteSigned- Të gjithë skriptet në distancë (UNC) ose shkarkimet duhet të nënshkruhen.
  • I pakufizuar- nuk kërkohet nënshkrim për asnjë lloj skripti.

Shtrirja e ndryshimit të ri

  • makinë lokale† - Politika e ekzekutimit prek të gjithë përdoruesit e kompjuterit.
  • Përdoruesi aktual. Politika e ekzekutimit prek vetëm përdoruesin aktual.
  • procesi. Politika e ekzekutimit ndikon vetëm në procesin aktual të Windows PowerShell.

† = Vlera e paracaktuar

Për shembull: nëse doni të ndryshoni politikën në RemoteSigned vetëm për CurrentUser, duhet të ekzekutoni komandën e mëposhtme:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

shënim. Për të ndryshuar politikën e ekzekutimit, duhet të ekzekutoni PowerShell Si Administrator. Nëse jeni në modalitetin normal dhe përpiqeni të ndryshoni politikën e ekzekutimit, do të merrni gabimin e mëposhtëm:

Qasja në çelësin e regjistrit 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell' është refuzuar. Për të ndryshuar politikën e ekzekutimit për shtrirjen e paracaktuar (LocalMachine), nisni Windows PowerShell me opsionin "Run as administrator".

Nëse dëshironi të shtrëngoni kufizimet e brendshme për skriptet tuaja që nuk janë shkarkuar nga uebi (ose të paktën nuk përmbajnë meta të dhëna UNC), mund ta detyroni politikën të ekzekutojë skriptet e nënshkruara. Për të nënshkruar skriptet tuaja, mund të ndiqni udhëzimet në artikullin e Scott Hanselman Sign PowerShell Scripts.

shënim. Shumica e njerëzve mund ta marrin këtë gabim kur hapin Powershell sepse gjëja e parë që PS përpiqet të bëjë gjatë fillimit është të ekzekutojë skriptin e profilit tuaj të përdoruesit që konfiguron mjedisin tuaj, por ju pëlqen.

Skedari zakonisht ndodhet në një dosje

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

Mund ta gjeni vendndodhjen e saktë duke ekzekutuar variablin powershell

$profil

Nëse profili nuk ka asgjë për të cilën ju intereson dhe nuk dëshironi të shqetësoheni për cilësimet tuaja të sigurisë, thjesht mund ta fshini atë dhe powershell nuk do të gjejë asgjë që nuk mund ta trajtojë.

Përshëndetje të gjithëve, sot dua t'ju tregoj se si të ekzekutoni një skript PowerShell në Windows. Imagjinoni situatën, keni shkruar një skript që thjeshton shumë daljen e informacionit në Active Directory, ju hapni snap-in e powershell, shkruani shtegun për në skriptin tuaj, shtypni enter dhe merrni një gabim.

Skedari nuk mund të ngarkohet<путь к вашему файлу>sepse ekzekutimi i skriptit nuk lejohet në këtë sistem. Shkruani "get-help about_signing" për më shumë informacion.

Le të shohim se si ta zgjidhim atë.

PowerShell ka një numër mënyrash ekzekutimi që përcaktojnë se çfarë lloj kodi lejohet të ekzekutohet. E gjithë kjo kontrollohet nga një çelës regjistri që jeton në HKLM. Ekzistojnë 4 mënyra të ndryshme ekzekutimi:

I kufizuar(I kufizuar): Politika e ekzekutimit të paracaktuar, nuk lejon skriptimin dhe lejon vetëm komanda ndërvepruese.

Të gjitha të nënshkruara(Të gjitha të nënshkruara): Lejon të ekzekutohen të gjitha skriptet. Vërtetë, të gjitha skriptet dhe skedarët e konfigurimit duhet të nënshkruhen nga një botues të cilit i besoni; kjo mënyrë ju ekspozon ndaj rrezikut të ekzekutimit të skripteve të nënshkruara (por me qëllim të keq) pasi të keni marrë prova besimi nga botuesi.

Nënshkruar nga telekomanda(Nënshkruar në distancë): Skriptet lokale funksionojnë pa nënshkrim. Të gjithë skriptet e shkarkuar duhet të nënshkruhen në mënyrë dixhitale.

e pakufizuar(I pakufizuar): Të gjithë skriptet dhe skedarët e konfigurimit të marrë nga aplikacionet e komunikimit si Microsoft Outlook, Internet Explorer, Outlook Express dhe Windows Messenger funksionojnë pasi të konfirmoni se e kuptoni që skedari vjen nga Interneti; nuk kërkohen nënshkrime dixhitale; kjo mënyrë ju ekspozon ndaj rrezikut të ekzekutimit të skripteve të panënshkruara, me qëllim të keq.

Mënyra e paracaktuar për PowerShell është "I kufizuar". Në këtë mënyrë, PowerShell funksionon vetëm si një guaskë interaktive. Nuk lejon skriptimin dhe ngarkon vetëm skedarët e konfigurimit të nënshkruar nga një botues të cilit i besoni.

Lejo ekzekutimin e skripteve powershell

Për të ekzekutuar skriptet e krijuar vetë, duhet të aktivizoni skriptet e pabesueshme me komandën Set-ExecutionPolicy u caktua në distancë dhe konfirmim (Vëmendje!!! për të ekzekutuar këtë komandë, duhet të ekzekutoni PowerShell me të drejta administratori). Pas kësaj, mund të rinisni ekzekutimin e skriptit.

Kur kërkohet, shtypni Y për të lejuar ekzekutimin e skripteve. Pas këtyre manipulimeve, mund të ekzekutoni skenarin tuaj.

Artikujt kryesorë të lidhur