Powershell paleidimas iš cmd. „PowerShell“ scenarijų vykdymas pagal tvarkaraštį

Administracijoje visada yra vietos kūrybiškumui. Ar norite atlikti automatizavimą? rutininė užduotis? Prašau! Ar reikia reguliariai tikrinti, ar kažkas veikia? Jokiu problemu! Ar norite apdoroti kokią nors milžinišką ataskaitą ir rodyti tik atitinkamus duomenis? Tai irgi galima. Visas šias ir daugelį kitų užduočių geriausia išspręsti naudojant scenarijus, o PowerShell yra optimalus pasirinkimas Windows atveju.

Kas yra „PowerShell“ ir kodėl jis geras?

UNIX ir Linux, o tam tikru momentu ir macOS vartotojai yra įpratę visada po ranka turėti Bash – šiek tiek senamadišką, bet universalų ir galingą įrankį, su kuriuo vos per kelias eilutes galite padaryti nuostabių dalykų. Užregistruojate naują scenarijų cron – ir viskas, jis jau veikia jūsų kompiuteryje arba serveryje ir tyliai daro ką nors naudingo.

Grįžtant prie „Windows“ (o kartais be jos neapsieina), supranti, kad „.bat“ scenarijai, nors ir geri, ne visada jus gelbsti: jų galimybės labai ribotos. Ir jei vis dar manėte, kad „PowerShell“ yra nežinomas dalykas, kuriam reikia ką nors pasiimti ir sukonfigūruoti, neskubėkite daryti išvadų - jei pažiūrėsite, tai visai neblogai.

„Windows PowerShell“ yra išplečiamas atvirojo kodo automatizavimo įrankis, kurį sudaro apvalkalas ( komandinė eilutė) ir scenarijų kalba. Pirmą kartą jis buvo parodytas 2003 m. (tada vadinosi Monad). „PowerShell 2.0“ buvo išleista su „Windows 7“ ir „Windows Server 2008 R2“ ir nuo tada yra standartinė „Windows“ funkcija. Jis netgi buvo įtrauktas į Windows XP SP3. „PowerShell“ sukurta ant „.NET Framework“ ir su ja integruota. PowerShell gali pasiekti COM, WMI ir ADSI ir, žinoma, taip pat vykdo konsolės komandas.

Apskritai posh turi tvirtus ryšius su Microsoft produktai, arba Active Directory arba pašto serveris Mainai. Tai leidžia pasiekti juos per konsolę ir išduoti komandas neprisijungus prie serverio įrangos.

Jei anksčiau nesidomėjote „PowerShell“, greičiausiai turite antrąją versiją. Rekomenduoju atnaujinti bent į trečią – jame daug daugiau funkcijų ir naudingų patarimų. Nesileidžiant į detales, PowerShell 2.0 apima apie tuziną modulių ir apie 350 komandų, o PowerShell 3.0 jau turi apie 2300 cmdlet iš daugiau nei 70 modulių. „Hakeris“ taip pat rašė apie tai, kuo skiriasi naujausia „PowerShell 5“ versija iš „Windows 10“.

Kūrimo aplinkos ir įrankių pasirinkimas

Dabar išsiaiškinkime, kur patogiausia rašyti kodą. Žinoma, taip pat galite naudoti Notepad, Notepad++ arba Sublime. Tačiau šiuo atveju tai nėra pats išmintingiausias redaktoriaus pasirinkimas. Geriausia pradėti susipažinti su „PowerShell“, apsiginklavusia įtraukta .


Tai net ne redaktorius, o beveik visavertė kūrimo aplinka. Yra „IntelliSense“ funkcija, leidžianti peržiūrėti cmdlet ir jų parametrų, kintamųjų, paslaugų ir kt. sąrašą. Palaikomi fragmentai, galima išplėsti funkcijų rinkinį per įvairius priedus. Komandų langas taip pat labai naudingas. Jame galite kurti komandas vizualiniu režimu: pasirenkate modulį, surandate norimą cmdlet ir nustatote jam reikiamus parametrus. Gautą komandą galima nukopijuoti į konsolę arba nedelsiant įvykdyti. Apskritai, savotiškas dizaineris administratoriui. Ir, žinoma, yra sintaksės paryškinimas, derinimo priemonė ir daug daugiau.

Tačiau „PowerShell ISE“ taip pat turi vertų konkurentų. Vienas iš jų - .

„PowerGUI“ yra vizualinis „PowerShell“ plėtinys. Tai leidžia lengvai sukurti savo scenarijus prieš pasirenkant reikiamus cmdlet. Paimkite tai, ko jums reikia, kad išspręstumėte problemą, ir vilkite ir numeskite dalis kodo, kol gausite scenarijų. Viena iš pagrindinių „PowerGUI“ funkcijų yra „Power Pack“ – paruošti scenarijai, kuriuos publikuoja vartotojų bendruomenė ir kuriuos galima nemokamai pasiekti. Yra paprastų komandų, tokių kaip vartotojų įtraukimas, ir sudėtingų, pavyzdžiui, jungiklių ir virtualių mašinų valdymas. Visus juos galima nesunkiai papildyti ir modifikuoti pagal poreikius.


Sapien įmonės yra pažangesnė aplinka, skirta bendram vieno projekto vystymui didelė suma dalyvių. Jei kada nors dirbote su Visual Studio, manau, pastebėsite panašumų. Kai kurios naudingos „PowerShell Studio“ funkcijos apima juostelės skydelį, nuotolinio derinimo palaikymą ir kompiliatoriaus funkcijas, leidžiančias įtraukti scenarijus į vykdomuosius failus. Yra palaikymas skirtingos versijos PowerShell.


Taip pat verta paminėti scenarijų naršyklę, skirtą „Windows PowerShell ISE“. Tai ne kūrimo aplinka, o labai įdomus Microsoft sukurtas įrankis. Scenarijų naršyklė suteikia prieigą prie paruoštų scenarijų duomenų bazės, kurią galima naudoti kaip pavyzdžius rašant savo kodą. Šis dalykas taip pat gali analizuoti jūsų parašytą kodą ir pasiūlyti, kaip jį patobulinti.


Keletas naudingų gudrybių

Išsiaiškinę redaktorių, galite pradėti rašyti kodą. „PowerShell“ nėra sudėtinga kalba, ir manau, kad jūs greitai ją įprasite. Komandos čia vadinamos cmdlet ir kiekviena iš jų susideda iš dviejų dalių. Pirmiausia reikia atlikti veiksmą, pavyzdžiui, gauti, nustatyti, pridėti, iškviesti, pašalinti. Tada jis nurodo, kam skirtas veiksmas: paslauga, VM, AzureAccount, DHCPServerSetting. Kiekviena dalis yra atskirta nuo kitos brūkšneliu. Pasirodo, pavyzdžiui, gauti procesas. Tai, beje, naudinga komanda, kuriame rodomas procesų sąrašas. Tarkime, jei rašote

gauti - apdoroti BadTh *

pamatysime kažką panašaus:

Valdo NPM (K ) PM (K ) WS (K ) VM (M ) CPU (-us ) Id ProcessName

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

28 4 - 210844 - 201128 - 163 25,67 2792 Blogas siūlas

Dabar galite nutraukti užšaldytą procesą:

Galite peržiūrėti jį rekursyviai, nors ir su šiek tiek sudėtingesne logika:

Taip pat galite padaryti

Beje, kiekvienam laukui parinkčių lange sąskaitą arba kompiuterį, kurį galite pasiekti ir skaityti duomenis. Tokiu būdu galite padaryti ištisas dalis. Pavyzdžiui, čia yra užklausa, pagrįsta duomenimis apie telefono numeriai:

Gauti - AdUser - Filtras * - Ypatybės OfficePhone | FT OfficePhone, UserPrincipalName

„PowerShell“ prieš šikšnosparnį

Kartais problemą galima išspręsti naudojant senamadišką metodą arba naudojant PowerShell pagalba. Rekomenduoju netingėti ir naudoti PS, jau vien dėl to, kad taip greičiau išmoksite ir galėsite panaudoti sudėtingesnėse situacijose. Be to, pamažu įvertinsite jo sintaksę – elegantiškesnę ir nuoseklesnę. Štai keletas pavyzdžių, kaip viskas buvo daroma anksčiau ir kaip tai galima padaryti naudojant „PowerShell“.

Ši komandų eilutė iš naujo paleis kompiuterį su dešimties sekundžių vėlavimu:

Taip galite iš naujo paleisti dnscache paslaugą (ar bet kurią kitą) naudodami bat:

sc sustabdyti dnscache

sc start dnscache

Programos paleidimas iš PowerShell

Užduotis paleisti bet kokį vykdomąjį failą (programą arba komandų eilutės įrankį) iš PowerShell atsiranda gana dažnai. „PowerShell“ tam siūlo keletą variantų. įvairiais būdais, kurį apsvarstysime vėliau šiame straipsnyje. Pradėkime nuo paprasčiausio...

Tiesioginis paleidimas

Paprasčiausias būdas paleisti vykdomąjį failą PowerShell yra pereiti į katalogą su failu ir paleisti jį tiesiogiai. Pavyzdžiui, paimkime paprastą programą, kuri rodo sveikinimą, ir paleiskite ją komanda:

Nustatyti vietą ″C:\Program Files″
.\Hello.exe

Atkreipkite dėmesį, kad net jei esate norimame kataloge, turite nurodyti santykinį vykdomojo failo kelią. Išimtis yra failai iš katalogų, išvardytų aplinkos kintamajame (kelyje). Pavyzdžiui, nenurodant kelio galima paleisti įvairias integruotas programas ir priemones (notepad, calc, ping ir kt.), esančias Windows\System32 kataloge.

Operatorius &

Jei reikia nurodyti visą vykdomojo failo kelią, galite naudoti operatorių & (skambinti operatoriui). Tai leidžia vykdyti cituotą teksto eilutę kaip vieną komandą. Pavyzdžiui:

& ′C:\Program Files\Hello.exe′

Kadangi & operatorius neanalizuoja perduodamos komandos, jis negali interpretuoti jos parametrų. Todėl papildomi parametrai\argumentai taip pat perduodami kaip tekstas, kabutėse. Kaip pavyzdį paimkime ankstesnę programą ir šiek tiek pakeiskime, kad ji priimtų norimą tekstą kaip argumentą:

& ′C:\Program Files\Hello.exe′ „Sveikas, pasauli“

Jei norite, galite nurodyti kelis argumentus, atskirtus kableliais:

& 'C:\Program Files\Hello.exe' 'Sveiki,', 'pasaulis'

Kad būtų patogiau, komandą ir argumentus galima sudėti į kintamuosius:

$exe = ′C:\Program Files\Hello.exe′
$arg1 = "Sveiki"
$arg2 = "pasaulis"
& $exe $arg1 $arg2

Na, jei yra daug argumentų, juos galima sujungti naudojant tokią konstrukciją:

$exe = ′C:\Program Files\Hello.exe′
$allargs = @("Sveiki,", "pasaulis")
& $exe $allargs

Invoke-Expression

Invoke-Expression cmdlet veikia taip pat, kaip ir operatorius & – ji paima teksto eilutę ir vykdo ją kaip komandą. Pavyzdžiui:

Invoke-Expression - komanda 'C:\Windows\Hello.exe'

Tačiau jis turi vieną didelį trūkumą, būtent nesugebėjimą dirbti su erdvėmis. Pavyzdžiui, ši komanda sukels klaidą:

Invoke-Expression - komanda 'C:\Program Files\Hello.exe'

Dėl šios funkcijos cmdlet naudoti labai nepatogu. Nors, jei reikia, tokių klaidų galima išvengti naudojant papildomas kabutes, pavyzdžiui:

Invoke-Expression - Komanda ″C:\′Programų failai′\Hello.exe″

Pradėti-Procesas

Start-Process cmdlet paleidžia nurodytą failą kaip procesą naudodama metodą Pradėti.NET klasė Procesas. Pavyzdžiui:

Paleisties procesas -FilePath ′C:\Program Files\Hello.exe′

Pagal numatytuosius nustatymus procesas vykdomas atskirame lange, kuris uždaromas, kai procesas baigiamas. Šį elgesį galite pakeisti naudodami parametrus, todėl dabartiniame lange bus paleista ši komanda:

Pradėti – Procesas – Failo kelias ′C:\Program Files\Hello.exe′ – NoNewWindow – Palaukite

„Start-Process“ taip pat leidžia procesui perduoti papildomus argumentus:

Pradėti – Procesas – Failo kelias ′C:\Programų failai\Hello.exe′ – Argumentų sąrašas „Sveikas, pasauli“ – Nėra naujo lango – Palaukite

Pagal numatytuosius nustatymus cmdlet nieko negrąžina, tačiau galite naudoti parametrą -PassThru, kad priverstinai grąžintumėte proceso objektą. Labai patogu įdėti šį objektą į kintamąjį:

$process = Pradėti - Procesas -FilePath ′C:\Program Files\Hello.exe′ - Palaukite -PassThru

iš kurių galite sužinoti daug naudingų dalykų, pvz., būsenos:

$process.HasExited

$process.ExitTime

arba vykdymo kodas:

$process.ExitCode

.NET

Iš esmės .NET Process klasė gali būti naudojama tiesiogiai, be Start-Process cmdlet. Pavyzdžiui, galite pradėti procesą naudodami komandą:

::Pradėti (“C:\Program Files\Hello.exe′)

Šis metodas yra gana nepatogus ir sudėtingas (mano nuomone), bet šiek tiek lankstesnis. Pavyzdžiui, paleiskime savo programą dabartiniame lange, perduokime jai argumentus ir gaukime vykdymo rezultatą:

$process = Naujas objektas - Tipo pavadinimas System.Diagnostics.Process
$process.StartInfo.FileName = ″C:\Program Files\Hello.exe″
$process.StartInfo.Arguments = ″Sveikas, pasauli″
$process.StartInfo.RedirectStandardOutput = $true
$process.StartInfo.UseShellExecute = $false
$process.Start()
$process.WaitForExit()

$process.StandatdOutput.ReadToEnd()

WMI

Su WMI galite padaryti beveik bet ką, įskaitant programos paleidimą. Metodas tam yra gana tinkamas Sukurti WMI klasė Win32_Process.Šis metodas pradeda procesą vietinėje arba nuotolinis kompiuteris per RPC. Pavyzdžiui, norint paleisti programą vietinis kompiuteris galite naudoti šią komandą:

()„Win32_Process“). Sukurti (“C:\Program Files\Hello.exe′)

Ir norint vykdyti nuotoliniame kompiuteryje, komanda atrodys taip:

()″\\remotecomputer\root\cimv2:Win32_Process″). Sukurti(′C:\Program Files\Hello.exe′)

Arba galite naudoti Invoke-WmiMethod cmdlet:

Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList ″C:\Program Files\Hello.exe″

Arba naudodami cmdlet Invoke-CimMethod:

Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @(CommandLine=″C:\Program Files\Hello.exe″)

WMI paleidžia procesą atskirame lange ir grąžina objektą, kuriame yra proceso ID (ProcessID) ir vykdymo rezultatas (ReturnValue). ReturnValue gali turėti šias reikšmes:

0 - Sėkmingas užbaigimas
2 – Prieiga uždrausta
3 – Nepakankamos privilegijos
8 – Nežinomas gedimas
9 – Kelias nerastas
21 – Neteisingas parametras

Invoke-Command

Invoke-Command cmdlet gali vykdyti komandas vietiniame arba nuotoliniame kompiuteryje, naudojant WinRM. Pavyzdžiui, norėdami paleisti programą vietiniame kompiuteryje, naudojame komandą:

Invoke-Command -ScriptBlock (″C:\′Programų failai′\Hello.exe″)

Jei reikia, programai galite perduoti argumentus:

Invoke-Command -ScriptBlock (C:\′Programų failai′\Hello.exe ″Labas, pasaulis″)

Atkreipkite dėmesį, kad Invoke-Command nėra labai draugiškas tarpams, todėl norėdami išvengti klaidų, turite kūrybiškai naudoti kabutes. Tačiau tokių problemų galima išvengti, pavyzdžiui, sujungus cmdlet su & operatoriumi:

Invoke-Command -ScriptBlock (&′C:\Program Files\Hello.exe′)

Invoke-Command daugiausia naudojama nuotolinio valdymo pultas, jo pagrindinis privalumas yra galimybė vienu metu veikti keliuose kompiuteriuose. Pavyzdžiui:

Invoke-Command – ScriptBlock (″C:\′Program Files′\Hello.exe″) – Kompiuterio pavadinimas SRV1, SRV2, SRV3

$scriptblock = (″C:\′Programų failai′\Hello.exe″)
$Kompiuteriai = @("SRV1", "SRV2", "SRV3")
Invoke-Command -ScriptBlock $scriptblock -ComputerName $Kompiuteriai

Pagal numatytuosius nustatymus cmdlet grąžina programos vykdymo rezultatą ir, jei jį paleidžiate fone(parametras -AsJob), tada grąžina užduoties objektą:

Invoke-Command -ScriptBlock (C:\′Program Files′\Hello.exe) -ComputerName localhost -AsDob -JobName Sveiki

Iškviesti elementą

„Invoke-Item“ cmdlet skirta failui taikyti numatytąjį veiksmą. Taigi galite paleisti vykdomąjį failą naudodami komandą:

Invoke-Item -Path ″C:\Program Files\Hello.exe″

Tačiau patogiausia naudoti Invoke-Item norint atidaryti konkretaus tipo failą. Pavyzdžiui, taip atidarome tekstinį failą:

Invoke-Item -Path ″C:\Files\test.txt″

Ir viskas tekstinius failus aplanke:

Invoke-Item -Path ″C:\Files\*.txt″

CMD

Apibendrinant, kitas būdas paleisti programą iš „PowerShell“ yra cmd apvalkalo naudojimas. Metodas yra gana „netiesioginis“, bet vis dėlto veikia. Ši komanda paleidžia naują cmd egzempliorių, jame vykdoma nurodytą programą, išeina iš cmd ir grąžina rezultatą:

cmd /c ″C:\Program Files\Hello.exe″

PoSh suteikia tokią gausybę būdų paleisti programą. Ir kiekvienas iš jų tinka tam tikroms situacijoms.

Beje, straipsnis buvo parašytas remiantis PowerShell: Deep Dive and Best Practice. Rekomenduoju perskaityti, ten dar yra daug įdomių dalykų.

Yra keli skirtingi scenarijaus paleidimo būdai, pagrindiniai iš jų yra žemiau:

  1. Paleiskite „PowerShell“. ir paleiskite jame esantį scenarijų (įveskite kelią į failą ir failo pavadinimą, pavyzdžiui, taip: C:\Scripts\test.ps1 arba eikite į scenarijaus aplanką su komanda cd C:\Scripts ir paleiskite jį su komanda.\test.ps1) Apvalkalą galima rasti ir paleisti įvairiais būdais. Vienas iš būdų yra meniu Pradėti. „Windows 7“ - turite eiti į „Visos programos“ - „Priedai“ - „Windows PowerShell“ ir paleisti „Windows PowerShell“ apvalkalą. „Windows 10“ - reikia rasti grupę su raide „W“ ir joje rasite „Windows PowerShell“.
  2. Paleiskite „Windows PowerShell ISE“ yra programa – kūrimo aplinka, leidžianti redaguoti ir derinti PowerShell scenarijus, kuri taip pat pagal numatytuosius nustatymus pasiekiama kartu su pačia PowerShell. Ją paleidus tereikia paspausti mygtuką „Atidaryti“ arba eiti į meniu Failas – Atidaryti ir pasirinkti norimą scenarijų, tada paspausti F5 arba mygtuką „Vykdyti scenarijų“. Windows PowerShell ISE rasite ten pat, kur PowerShell apvalkalas - meniu Pradėti.
  3. Paleiskite standartinę komandų eilutę ir įrašykite jame:
    powershell failas<имя_скрипта> (pavyzdys: powershell -failas myscript.ps1)

Jei anksčiau nepaleidote PowerShell scenarijų, greičiausiai gausite šį pranešimą: Nepavyksta parsisiųsti failą<имя_скрипта>, nes scenarijaus vykdymas šioje sistemoje yra draudžiamas. Norėdami gauti daugiau informacijos, įveskite „get-help about_signing“. Taip yra dėl to, kad saugumo sumetimais ir siekiant išvengti atsitiktinio vykdymo kenkėjiškas kodas, visi scenarijai turi būti pasirašyti skaitmeniniu būdu.

Kaip leisti vykdyti nepasirašytą „PowerShell“ scenarijų?

1. „PowerShell“., prieš paleisdami scenarijų, paleiskite komandą, leidžiančią vykdyti nepasirašytus scenarijus dabartinei apvalkalo sesijai:

Set-ExecutionPolicy RemoteSigned -Apimties procesas

2. Paleidžiant iš standartinės komandinės eilutės naudokite parametrą -executionpolicy, t.y. paleiskite scenarijų taip:

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

Abu metodai nustato politiką tik dabartinei sesijai, o registre įrašytų PowerShell scenarijų vykdymo saugos politika nebus pakeista ir išliks tokia pati. Jei norite pakeisti scenarijaus vykdymo saugos strategiją į „nuolatinę“, naudokite šį metodą:

3. Leisti paleisti visam laikui: paleiskite „PowerShell“ kaip administratorių, tada paleiskite komandą:

Set-ExecutionPolicy RemoteSigned

Pastaba: Jei scenarijus buvo atsisiųstas iš interneto, tada, norėdami išvengti paleidimo patvirtinimo užklausos, turite naudoti Bypass, o ne RemoteSigned - visiškas išjungimas bet kokius prašymus ir įspėjimus.

Kaip paleisti PowerShell scenarijų fone?

Norėdami tai padaryti, tiesiog naudokite paleidimo parametrą -WindowStyle, kuris gali turėti šias reikšmes: Normal, Minimized, Maximized ir Hidden. Taigi, norėdami paleisti nepasirašytą scenarijų fone, turite paleisti komandą:

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

Jei norite, taip pat galite pridėti -NonInteractive, kad scenarijus nekeltų klausimų. Taigi scenarijus bus vykdomas nepastebėtas vartotojo. Būkite atsargūs naudodami šį metodą.

PowerShell scenarijaus su parametrais vykdymas

Tikrasis paleidimas turėtų būti atliekamas taip, tarsi paleistumėte įprastą programą arba šikšnosparnio failą su parametrais. Pavyzdžiui, norėdami paleisti scenarijų su parametrais iš komandinės eilutės, galite parašyti šią komandą:

powershell -executionpolicy RemoteSigned -failas<имя_скрипта>param1 param2 "kitas teksto parametras"

Pačiame scenarijuje galite gauti tokius parametrus:

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

PowerShell ISE galite paleisti scenarijų su parametrais tokiu pačiu būdu naudodami komandų sritį.

Kaip paleisti PowerShell scenarijų naudojant nuorodą?

Šią užduotį galima atlikti dviem būdais:

  1. Sukurkite bat/cmd failą, kuriame rašysite komandą paleisti scenarijų (perskaitėte aukščiau pateiktus parametrus)
  2. Sukurkite nuorodą į PowerShell, kurią galite rasti aplanke c:\Windows\System32\WindowsPowerShell\v<версия>\ ir nuorodos ypatybėse lauke „Objektas“ pridėkite reikiamus parametrus.

Pavyzdžiui, norėdami paleisti „powershell“ scenarijų, kai vartotojas prisijungia, galite tiesiog sukurti nuorodą, kaip aprašyta 2 punkte, ir įdėti ją paleidžiant. Be to, sukūrę nuorodą vienu iš aukščiau pateiktų metodų, galėsite lengvai paleisti scenarijų kaip administratorius arba kaip bet kuris kitas vartotojas kaip įprastą programą.

PowerShell scenarijų kalba – gana galingas įrankis spręsti įvairias problemas, tačiau ją galima panaudoti ne tik geriems dalykams, bet ir žalai, tad naudokite jį protingai;)

Sveiki visi, šiandien noriu jums pasakyti, kaip paleisti „PowerShell“ scenarijų sistemoje „Windows“. Įsivaizduokite situaciją: parašėte scenarijų, kuris labai supaprastina informacijos rodymą „Active Directory“, atidarote „Powershell“ priedą, įveskite scenarijaus kelią, paspauskite „Enter“ ir gausite klaidą.

Nepavyksta parsisiųsti failą<путь к вашему файлу>, nes scenarijaus vykdymas šioje sistemoje yra draudžiamas. Norėdami gauti daugiau informacijos, įveskite „get-help about_signing“.

Pažiūrėkime, kaip tai išspręsti.

„PowerShell“ turi daugybę vykdymo režimų, kurie nustato, kokio tipo kodui leidžiama paleisti. Visa tai valdoma registro raktu, kuris yra HKLM. Yra 4 skirtingas režimas egzekucijos:

Ribotas(Apribota): numatytoji vykdymo politika neleidžia paleisti scenarijų ir leidžia vykdyti tik interaktyvias komandas.

Visi pasirašyti(Visi pasirašyti): leidžia paleisti visus scenarijus. Tiesa, visi scenarijai ir konfigūracijos failai turi būti pasirašyti leidėjo, kuriuo pasitikite; Šis režimas kelia pavojų paleisti pasirašytus (bet kenkėjiškus) scenarijus, gavę patvirtinimą, kad pasitikite leidėju.

Ištrinta pasirašyta(Parašytas nuotoliniu būdu): vietiniai scenarijai veikia be parašo. Visi atsisiunčiami scenarijai turi būti pasirašyti skaitmeniniu būdu.

Neribota(Neribota): visi scenarijai ir konfigūracijos failai, gauti iš ryšio programų, pvz Microsoft Outlook, Internet Explorer, Outlook Express ir Windows Messenger veikia po to, kai patvirtinate, kad suprantate, kad failas atkeliauja iš interneto; nė vienas skaitmeniniai parašai nereikalingas; Šis režimas kelia pavojų, kad bus vykdomi nepasirašyti, kenkėjiški scenarijai.

Pagal numatytuosius nustatymus „PowerShell“ naudoja ribotą režimą. Šiuo režimu PowerShell veikia tik kaip interaktyvus apvalkalas. Ji neleidžia paleisti scenarijų ir įkelia tik konfigūracijos failus, kuriuos pasirašo leidėjas, kuriuo pasitikite.

Leisti paleisti powershell scenarijus

Norėdami paleisti savo sukurtus scenarijus, naudodami komandą turite leisti paleisti nepatikimus scenarijus „Set-ExecutionPolicy“ pasirašyta nuotoliniu būdu ir patvirtinimas (Dėmesio!!! Norėdami paleisti šią komandą, turite paleisti PowerShell administratoriaus teisėmis). Po to galite vėl paleisti scenarijų.

Kai bus paprašyta, paspauskite Y, kad leistų vykdyti scenarijų. Po šių manipuliacijų galėsite paleisti savo scenarijų.

„PowerShell“ turi daugybę vykdymo režimų, kurie nustato, kokio tipo kodui leidžiama paleisti. Visa tai valdoma registro raktu, kuris yra HKLM. Yra 4 skirtingi vykdymo režimai:

Ribotas(Apribota): numatytoji vykdymo politika neleidžia paleisti scenarijų ir leidžia vykdyti tik interaktyvias komandas.

Visi pasirašyti(Visi pasirašyti): leidžia paleisti visus scenarijus. Tiesa, visi scenarijai ir konfigūracijos failai turi būti pasirašyti leidėjo, kuriuo pasitikite; Šis režimas kelia pavojų paleisti pasirašytus (bet kenkėjiškus) scenarijus, gavę patvirtinimą, kad pasitikite leidėju.

Ištrinta pasirašyta(Parašytas nuotoliniu būdu): vietiniai scenarijai veikia be parašo. Visi atsisiunčiami scenarijai turi būti pasirašyti skaitmeniniu būdu.

Neribota(Neribojama): visi scenarijai ir konfigūracijos failai, gauti iš komunikacijos programų, tokių kaip Microsoft Outlook, Internet Explorer, Outlook Express ir Windows Messenger, veikia patvirtinus, kad suprantate, kad failas yra iš interneto; nereikia skaitmeninių parašų; Šis režimas kelia pavojų, kad bus vykdomi nepasirašyti, kenkėjiški scenarijai.

Pagal numatytuosius nustatymus „PowerShell“ naudoja ribotą režimą. Šiuo režimu PowerShell veikia tik kaip interaktyvus apvalkalas. Ji neleidžia paleisti scenarijų ir įkelia tik konfigūracijos failus, kuriuos pasirašo leidėjas, kuriuo pasitikite.

Jei gaunate erzinančią raudoną klaidą, daugeliu atvejų taip yra todėl, kad bandote paleisti nepasirašytą scenarijų. Labiausiai saugiu būduŠios problemos sprendimas yra pakeisti vykdymo politiką į neribotą, paleisti scenarijų ir grįžti prie ribotos politikos.

Norėdami pakeisti vykdymo politiką į neribotą, administracinėje PowerShell paleiskite šią komandą:

Set-ExecutionPolicy Neribota

Pamatysite patvirtinimo užklausą. Paspausk Enter.

Dabar galite paleisti atsisiųstą scenarijų. Tačiau jūs rizikuojate, todėl, kai scenarijus bus baigtas, būtinai grąžinkite vykdymo politiką į ribotą režimą. Tai galite padaryti naudodami šią komandą:

Set-ExecutionPolicy Restricted

Dar kartą pamatysite patvirtinimo užklausą. Paspausk Enter.

Tai viskas! Sėkmės tau!

Dalintis