Pagrindinis » kaip » Kaip konfigūruoti „Windows“ dirbti su „PowerShell“ skriptais lengviau

    Kaip konfigūruoti „Windows“ dirbti su „PowerShell“ skriptais lengviau

    „Windows“ ir „PowerShell“ turi įmontuotas apsaugos funkcijas ir numatytas konfigūracijas, skirtas galutiniams vartotojams užkirsti kelią atsitiktinai paleisti scenarijus vykdant kasdienę veiklą. Tačiau, jei kasdienėje veikloje įprastai dalyvaujate rašant ir paleisdami savo „PowerShell“ scenarijus, tai gali būti daugiau nepatogumų nei nauda. Čia parodysime, kaip dirbti su šiomis funkcijomis, nekeliant pavojaus saugumui.

    Kaip ir kodėl „Windows“ ir „PowerShell“ užkerta kelią scenarijų vykdymui.

    „PowerShell“ yra efektyvi komandų apvalkalo ir skriptų kalba, skirta pakeisti „Windows“ sistemose esančius CMD ir partijos scenarijus. Tokiu būdu „PowerShell“ scenarijus gali būti sukonfigūruotas taip, kad tai padarytų rankiniu būdu iš komandų eilutės. Tai prilygsta praktiškai bet kokiems jūsų sistemoje galiojantiems pakeitimams, atsižvelgiant į jūsų vartotojo abonemente nustatytus apribojimus. Taigi, jei galėtumėte tiesiog dukart spustelėti „PowerShell“ scenarijų ir paleisti jį su visomis administratoriaus teisėmis, paprastas vienintelis linijinis įrašas gali iš tikrųjų sudaužyti jūsų dieną:

    „Get-ChildItem“ „$ env: SystemDrive“ -Recurse -ErrorAction SilentlyContinue | Pašalinti elementą -Force -Recurse -ErrorAction SilentlyContinue

    NEGALIMA pirmiau minėtos komandos!

    Tai tiesiog per failų sistemą ir ištrina viską, ką gali. Įdomu tai, kad dėl to sistema gali neveikti taip greitai, kaip jūs manote - netgi tada, kai paleisite iš padidintos sesijos. Bet jei kas nors skambina jums po to, kai paleisite šį scenarijų, nes jie staiga negali rasti savo failų ar paleisti kai kurias programas, „išjungimas ir vėl įjungimas“ tikriausiai veda juos į „Windows“ paleidimo remontą, kur jie bus papasakoti nieko, ką galima padaryti problemai išspręsti. Kas gali būti dar blogiau, vietoj to, kad gautumėte scenarijų, kuris tiesiog nusausintų jų failų sistemą, jūsų draugas gali būti apgaulingas, kad būtų paleista ir atsisiunčiama ir įdiegiama „keylogger“ arba nuotolinės prieigos paslauga. Tada, užuot pateikę klausimus apie paleidimo taisymą, jie gali paklausti policijos klausimų dėl bankų sukčiavimo!

    Iki šiol turėtų būti aišku, kodėl tam tikri dalykai yra būtini siekiant apsaugoti galutinius vartotojus nuo jų. Tačiau galios vartotojai, sistemos administratoriai ir kiti geekai paprastai yra (nors ir yra išimčių) šiek tiek atsargesni dėl šių grėsmių, žinodami, kaip juos atpažinti ir lengvai išvengti, ir tiesiog noriu tęsti darbą. Norėdami tai padaryti, jie turės arba išjungti arba dirbti keli kelio blokai:

    • „PowerShell“ neleidžia numatyti išorinio scenarijų vykdymo.
      „PowerShell“ nustatymas „ExecutionPolicy“ neleidžia pagal nutylėjimą atlikti išorinius scenarijus visose „Windows“ versijose. Kai kuriose „Windows“ versijose numatytasis neleidžia scenarijų vykdyti. Mes parodėme, kaip pakeisti šį nustatymą „Kaip leisti„ PowerShell “scenarijų vykdymą„ Windows 7 “, bet mes taip pat aptarsime jį keliais lygiais.
    • „PowerShell“ pagal nutylėjimą nėra susieta su .PS1 failo plėtiniu.
      Tai iš pradžių pristatėme mūsų PowerShell Geek mokyklos serijoje. „Windows“ nustato numatytąjį .PS1 failų veiksmą, kad būtų galima juos atidaryti „Notepad“, o ne siųsti juos į „PowerShell“ komandų interpretatorių. Taip tiesiogiai užkertamas kelias atsitiktiniam kenksmingų scenarijų vykdymui, kai jie tiesiog dukart spustelėjami.
    • Kai kurie „PowerShell“ scenarijai neveiks be administratoriaus leidimų.
      Netgi dirbant su administratoriaus lygio paskyra, vis tiek turite atlikti vartotojo abonemento valdymą (UAC), kad atliktumėte tam tikrus veiksmus. Komandinės eilutės įrankiams tai gali būti šiek tiek sudėtinga. Nenorime išjungti UAC, bet tai vis dar malonu, kai galime padaryti jį šiek tiek lengviau spręsti.

    Tos pačios problemos iškyla skyriuje „Kaip naudoti paketinį failą, kad„ PowerShell “scenarijai būtų lengviau paleisti, kur mes einame jums rašant paketinį failą, kad laikinai juos suprastume. Dabar mes parodysime jums, kaip nustatyti savo sistemą ilgalaikiu sprendimu. Turėkite omenyje, kad paprastai neturėtumėte atlikti šių pakeitimų sistemose, kurios nėra naudojamos tik jūs - kitaip kitiems naudotojams kyla didesnė rizika patekti į tas pačias problemas, kuriomis siekiama užkirsti kelią šioms funkcijoms.

    .PS1 failo susiejimo keitimas.

    Pirmasis ir galbūt labiausiai erzinantis keliauti yra numatytoji .PS1 failų asociacija. Šių failų susiejimas, išskyrus „PowerShell.exe“, yra prasmingas užkirsti kelią atsitiktiniam nepageidaujamų scenarijų vykdymui. Tačiau, turint omenyje, kad „PowerShell“ yra integruota scenarijų aplinka (ISE), kuri yra specialiai sukurta „PowerShell“ scenarijų redagavimui, kodėl norime numatyti? Net jei nesate pasirengę visapusiškai pereiti prie dvigubo paspaudimo paleidimo funkcijos, tikriausiai norėsite pakeisti šiuos nustatymus.

    Jūs galite pakeisti .PS1 failo susiejimą su bet kuria programa, kurią norite, naudodami numatytųjų programų valdymo skydelį, bet tiesiai į registrą kasimas jums suteiks šiek tiek daugiau galimybių kontroliuoti, kaip bus atidaryti failai. Taip pat galite nustatyti arba keisti papildomas parinktis, kurios yra prieinamos kontekstiniame meniu. Prieš tai nepamirškite padaryti atsarginės registro kopijos!

    Registro nustatymai, valdantys „PowerShell“ scenarijų atidarymą, yra saugomi šioje vietoje:

    „HKEY_CLASSES_ROOT“ „Microsoft.PowerShellScript.1“

    Jei norite ištirti šiuos nustatymus prieš juos keisdami, pažvelkite į šį raktą ir jo raktus su „Regedit“. „Shell“ raktas turi turėti tik vieną reikšmę „(Numatytasis)“, kuris nustatytas kaip „Atidaryti“. Tai rodyklė į numatytąjį veiksmą dukart spustelėjus failą, kurį matysime sub-raktuose.

    Išplėskite „Shell“ raktą ir pamatysite tris raktus. Kiekvienas iš jų yra veiksmas, kurį galite atlikti, kuris yra specifinis „PowerShell“ scenarijai.

    Kiekvieną raktą galite išplėsti, kad ištirtumėte vertes, tačiau iš esmės prilygsta toliau nurodytoms reikšmėms:

    • 0 - Vykdyti su „PowerShell“. „Run with PowerShell“ iš tikrųjų yra „PowerShell“ scenarijų kontekstiniame meniu esančios parinkties pavadinimas. Tekstas tiesiog ištraukiamas iš kitos vietos, o ne naudojant raktinį pavadinimą kaip ir kiti. Ir tai dar nėra numatytasis dvigubo paspaudimo veiksmas.
    • Redaguoti - Atidaryti „PowerShell ISE“. Tai yra daug daugiau prasmės nei „Notepad“, tačiau vis tiek turite dešiniuoju pelės klavišu spustelėkite .PS1 failą, kad tai atliktumėte pagal nutylėjimą.
    • Atidaryti - Atidaryti Notepad. Atkreipkite dėmesį, kad šis rakto pavadinimas taip pat yra eilutė, saugoma „Shell“ rakto „(Default)“ reikšme. Tai reiškia, kad dukart spustelėjus failą „Atidaryti“, ir kad veiksmas paprastai nustatomas naudoti „Notepad“.

    Jei norite priklijuoti jau parengtas komandų eilutes, galite tiesiog pakeisti „(Numatytoji)“ reikšmę „Shell“ klavišu, kad atitiktų raktą, kuris atitinka tai, ką norite padaryti dukart spustelėjus. Tai galima lengvai atlikti iš „Regedit“, arba galite pasinaudoti pamokomis, gautomis iš mūsų vadovo, ieškant registro su „PowerShell“ (taip pat nedideliu PSDrive įgnybtu), kad pradėtumėte kurti pakartotinai naudojamą scenarijų, kuris gali sukonfigūruoti jūsų sistemas. Žemiau pateiktos komandos turi būti paleistos iš padidintos „PowerShell“ sesijos, panašios į „CMD“ administravimą.

    Pirma, norėsite konfigūruoti PSDrive HKEY_CLASSES_ROOT, nes tai nėra nustatyta pagal numatytuosius nustatymus. Šios komandos komanda yra:

    Naujas PSDrive HKCR registras HKEY_CLASSES_ROOT

    Dabar jūs galite naršyti ir redaguoti registro raktus ir vertes HKEY_CLASSES_ROOT kaip ir įprastuose HKCU ir HKLM PSDrives.

    Jei norite konfigūruoti dukart spustelėjus, kad paleistumėte „PowerShell“ scenarijus tiesiogiai:

    „Set-ItemProperty HKCR“: „Microsoft“ .PowerShellScript.1 „Shell“ (numatytasis) '0

    Norėdami konfigūruoti dukart spustelėjus, kad atidarytumėte „PowerShell“ scenarijus „PowerShell ISE“:

    „Set-ItemProperty HKCR“: „Microsoft“ .PowerShellScript.1 „Shell“ (numatytasis) „Redaguoti“

    Jei norite atkurti numatytąją vertę (dukart spustelėkite, kad atidarytumėte „PowerShell“ scenarijus „Notepad“):

    Set-ItemProperty HKCR: „Microsoft“ .PowerShellScript.1 „Shell“ (numatytasis) „Atidaryti“

    Tai tik pagrindiniai pakeitimai pagal numatytąjį dvigubo paspaudimo veiksmą. Išsamesnės informacijos apie tai, kaip „PowerShell“ scenarijai tvarkomi, kai jie atidaromi „PowerShell“ iš „Explorer“ kitame skyriuje. Turėkite omenyje, kad taikymo sritis neleidžia PSDrives išlikti per sesijas. Taigi, tikriausiai norėsite įtraukti naują „PSDrive“ liniją bet kokio konfigūravimo scenarijaus pradžioje, kurį kuriate šiam tikslui, arba pridėkite jį prie „PowerShell“ profilio. Priešingu atveju, prieš bandydami atlikti tokius pakeitimus, turėsite paleisti tą bitą rankiniu būdu.

    „PowerShell ExecutionPolicy“ nustatymo keitimas.

    „PowerShell's ExecutionPolicy“ yra dar vienas apsaugos nuo kenksmingų scenarijų vykdymo sluoksnis. Tam yra kelios parinktys ir keli skirtingi būdai, kuriuos galima nustatyti. Nuo labiausiai apsaugotos iki galimų prieinamų parinkčių yra:

    • Apribotas - neleidžiama paleisti jokių scenarijų. (Daugumos sistemų numatytasis nustatymas.) Tai netgi neleis jūsų profilio scenarijai paleisti.
    • „AllSigned“ - visi scenarijai turi būti skaitmeniniu būdu pasirašyti patikimo leidėjo, norint paleisti be naudotojo raginimo. Skriptai, kuriuos pasirašo leidėjai, aiškiai apibrėžti kaip nepatikimi, arba skriptai, kurie apskritai nėra pasirašyti, nebus paleisti. „PowerShell“ paragins naudotoją patvirtinti, jei scenarijų pasirašo leidėjas, kuris dar nėra apibrėžtas kaip patikimas ar nepatikimas. Jei nepavyko skaitmeniniu būdu pasirašyti savo profilio scenarijaus ir pasitikėjote tuo parašu, jis negalės paleisti. Būkite atsargūs, kuriuos leidėjus pasitikite, nes vis tiek galite paleisti kenksmingus scenarijus, jei pasitikite neteisingu.
    • „RemoteSigned“ - skriptui, atsisiunčiamam iš interneto, tai yra tokia pati kaip „AllSigned“. Tačiau scenarijai, sukurti vietoje arba importuoti iš kitų šaltinių, išskyrus internetą, gali veikti be jokio patvirtinimo raginimo. Čia taip pat turėsite būti atsargūs, kokie skaitmeniniai parašai pasitikite, bet netgi būkite atsargesni už nepasirašytus scenarijus, kuriuos pasirinksite paleisti. Tai aukščiausias saugumo lygis, pagal kurį galite turėti darbo profilio scenarijų be skaitmeninio parašo.
    • Neribotas - leidžiama paleisti visus scenarijus, tačiau skriptui iš interneto reikės patvirtinimo. Nuo to momento jums teks vengti paleisti nepatikimus scenarijus.
    • Bypass - viskas veikia be įspėjimo. Būkite atsargūs su šiuo.
    • Nenustatyta - dabartinėje taikymo srityje politika nėra apibrėžta. Tai naudojama, jei norite leisti mažesnėse srityse nustatytą politiką (daugiau informacijos toliau) ar OS numatytuosius nustatymus.

    Kaip siūloma neapibrėžtoje aprašyme, pirmiau minėta politika gali būti nustatyta viename ar keliuose taikymo sričių. Jūs galite naudoti „Get-ExecutionPolicy“, naudodami -List parametrą, kad pamatytumėte visus taikymo sritis ir jų dabartinę konfigūraciją.

    Taškai yra išvardyti pirmenybės tvarka, o viršutinė apibrėžta sritis apima visus kitus. Jei nėra apibrėžtos politikos, sistema grįžta į numatytąjį nustatymą (daugeliu atvejų tai ribojama).

    • „MachinePolicy“ reiškia grupės politiką, galiojančią kompiuterio lygmenyje. Tai paprastai taikoma tik domene, bet taip pat gali būti atliekama ir vietoje.
    • UserPolicy reiškia grupės politiką, galiojančią naudotojui. Tai taip pat paprastai naudojama tik įmonių aplinkoje.
    • Procesas yra šios „PowerShell“ atvejo specifinė sritis. Šios srities politikos pakeitimai neturės įtakos kitiems „PowerShell“ veikiantiems procesams ir bus nutraukti pasibaigus šiai sesijai. Tai galima konfigūruoti parametru -ExecutionPolicy, kai paleidžiamas „PowerShell“, arba ją galima nustatyti tinkama „Set-ExecutionPolicy“ sintakse sesijos metu.
    • „CurrentUser“ yra sritis, kuri yra sukonfigūruota vietiniame registre ir taikoma vartotojo abonementui, naudojamam „PowerShell“ paleidimui. Ši sritis gali būti pakeista naudojant „Set-ExecutionPolicy“.
    • LocalMachine yra vietiniame registre sukonfigūruota taikymo sritis, taikoma visiems sistemos naudotojams. Tai yra numatytoji sritis, pakeista, jei „Set-ExecutionPolicy“ vykdoma be parametro „-Scope“. Kadangi jis taikomas visiems sistemos naudotojams, jį galima keisti tik iš padidintos sesijos.

    Kadangi šiame straipsnyje daugiausia kalbama apie saugumą, siekiant palengvinti naudojimąsi, mes tik nerimaujame dėl mažesnių trijų sričių. „MachinePolicy“ ir „UserPolicy“ nustatymai yra tikrai naudingi tik tuo atveju, jei norite įgyvendinti ribojančią politiką, kuri nėra taip lengvai apeinama. Laikydamiesi mūsų pakeitimų proceso ar žemesniame lygmenyje, bet kuriuo metu galime lengvai naudoti bet kokią politiką, kuri, mūsų manymu, yra tinkama tam tikrai situacijai.

    Siekiant išlaikyti pusiausvyrą tarp saugumo ir naudojimo, ekrano nuotraukoje esanti politika tikriausiai yra geriausia. Nustatant „LocalMachine“ politiką „Apribota“, paprastai neleidžiama kitiems, nei jums, paleisti scenarijus. Žinoma, tai gali apeiti vartotojai, kurie žino, ką daro be didelių pastangų. Bet jis turėtų išlaikyti bet kokius netechnologinius vartotojus nuo atsitiktinio „PowerShell“ katastrofiško įvykio. Jei „CurrentUser“ (t.y. jūs) nustatėte kaip „Unrestricted“, galėsite rankiniu būdu atlikti komandų eilutės scenarijus, tačiau norite išsaugoti įspėjimą, kad skriptai atsisiunčiami iš interneto. „RemoteSigned“ nustatymas proceso lygmenyje turėtų būti atliekamas su „PowerShell.exe“ sparčiuoju klavišu arba (kaip atliksime toliau) registro reikšmėse, kurios kontroliuoja „PowerShell“ scenarijų elgesį. Tai leis lengvai atlikti dvigubą paspaudimą, kad galėtumėte valdyti bet kokius jūsų parašytus scenarijus, tuo pat metu sustiprindami kliūtis netyčia (potencialiai kenkėjiškų) scenarijų vykdymui iš išorinių šaltinių. Mes norime tai padaryti čia, nes daug lengviau atsitiktinai dukart spustelėti scenarijų, nei paprastai jį vadinti rankiniu būdu iš interaktyvios sesijos.

    Jei norite nustatyti „CurrentUser“ ir „LocalMachine“ politiką, kaip nurodyta aukščiau esančiame paveikslėlyje, paleiskite šias komandas iš padidintos „PowerShell“ sesijos:

    „Set-ExecutionPolicy Restricted Set-ExecutionPolicy Unrestricted -Scope CurrentUser“

    Kad vykdytumėte „RemoteSigned“ politiką „Explorer“ paleistose scenarijose, turėsime pakeisti vertę viduje vieno iš registro raktų, kuriuos ieškojome anksčiau. Tai ypač svarbu, nes, priklausomai nuo „PowerShell“ ar „Windows“ versijos, numatytoji konfigūracija gali būti skirta apeiti visus „ExecutionPolicy“ nustatymus, išskyrus „AllSigned“. Jei norite sužinoti, kokia yra jūsų kompiuterio esama konfigūracija, galite paleisti šią komandą (įsitikinkite, kad pirmasis HKCR PSDrive yra susietas):

    Get-ItemProperty HKCR: „Microsoft“ .PowerShellScript.1 „Shell“ komanda Pasirinkti objektą (numatytasis)

    Numatytoji konfigūracija tikriausiai bus viena iš šių dviejų eilučių arba kažką panašaus:

    („Windows 7“ SP1 x64, su „PowerShell 2.0“)

    „C“: „Windows System32“ „WindowsPowerShell “1.0„ powerhell.exe “„ “- failas„% 1 “

    (Matoma „Windows 8.1 x64“, su „PowerShell 4.0“)

    "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-Komanda" "jei ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Skaitymo proceso apeiti; & '% 1 „“

    Pirmasis nėra pernelyg blogas, nes visa tai atlieka scenarijų pagal esamus „ExecutionPolicy“ nustatymus. Tai galėtų būti pagerinta, nes griežtesni apribojimai būtų taikomi daugiau avarijų sukeliančiai veiklai, tačiau tai nebuvo iš pradžių numatyta paleisti dvigubu paspaudimu, ir pagaliau numatytoji politika yra apribota. Antrasis variantas yra visiško aplinkkelio, nesvarbu, koks tikėtina, kad turite vietą, net ir ribotai. Kadangi aplinkkelis bus taikomas „Proceso“ srityje, jis turi įtakos tik seansams, kurie paleidžiami, kai scenarijai paleidžiami iš „Explorer“. Tačiau tai reiškia, kad galėtumėte baigti skriptus, kuriuos kitaip galite tikėtis (ir norite), kad jūsų politika būtų draudžiama.

    Kad nustatytumėte „Explorer“ paleistų scenarijų proceso lygio vykdymąPolicy, pagal aukščiau pateiktą ekrano kopiją, turėsite pakeisti tą pačią registro vertę, kurią mes tik uždavėme. Jūs galite tai padaryti rankiniu būdu „Regedit“, pakeisdami jį šiuo adresu:

    „C: Windows System32 WindowsPowerShell1.0 powerhell.exe“ „-ExecutionPolicy“ „RemoteSigned“ „-file“ „% 1“

    Taip pat galite pakeisti nustatymus iš „PowerShell“, jei norite. Nepamirškite tai padaryti iš padidintos sesijos, sujungus HKCR PSDrive.

    „Set-ItemProperty HKCR“: „Microsoft“ .PowerShellScript.1 „Shell“ komanda „(numatytasis)“ „C“: „Windows System32 WindowsPowerShell1.0 powerhell.exe“ „-ExecutionPolicy“ „RemoteSigned“ „-file“ “ % 1 ""

    Paleiskite „PowerShell“ scenarijus kaip administratorių.

    Kaip ir bloga idėja visiškai išjungti UAC, taip pat bloga saugumo praktika paleisti scenarijus ar programas su padidintomis privilegijomis, nebent jums iš tikrųjų reikia atlikti operacijas, kurioms reikia administratoriaus prieigos. Taigi nerekomenduojama kurti UAC spartą į numatytąjį „PowerShell“ scenarijų veiksmą. Tačiau galime pridėti naują kontekstinio meniu parinktį, kad galėtume lengvai paleisti scenarijus aukštesnėse sesijose, kai mums reikia. Tai panaši į metodą, naudojamą pridėti „Atidaryti su užrašu“ į visų failų kontekstinį meniu, tačiau čia tik ketiname nukreipti „PowerShell“ scenarijus. Mes taip pat ketiname perkelti kai kuriuos ankstesniame straipsnyje naudojamus metodus, kur mes naudojome partijos failą vietoj registro hacks, kad paleistume „PowerShell“ scenarijų.

    Norėdami tai padaryti „Regedit“, grįžkite į „Shell“ raktą:

    „HKEY_CLASSES_ROOT“ „Microsoft.PowerShellScript.1“

    Čia sukurkite naują raktą. Skambinkite „Vykdyti su„ PowerShell “(administratorius)“. Po to sukurkite kitą raktą, vadinamą „Komanda“. Tada nustatykite „(Default)“ reikšmę pagal Command:

    "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-Komanda" "& Pradėti procesą PowerShell.exe -Argumentų sąrašas" - vykdymasPolicy RemoteSigned -Failas "% 1"  "

    Tą patį „PowerShell“ šiuo metu reikės trims linijoms. Vienas kiekvienam naujam klavišui ir vienas - nustatyti „(Numatytoji)“ reikšmę komandai. Nepamirškite aukščio ir HKCR žemėlapių.

    Naujas punktas „HKCR: Microsoft.PowerShellScript.1 Shell“ su „PowerShell“ (administratorius) „Naujas elementas“ HKCR: „Microsoft“ .PowerShellScript.1 „Shell“ naudojant „PowerShell“ (administratorius) „„ Set-ItemProperty “komanda„ Set-ItemProperty “ HKCR: Microsoft.PowerShellScript.1 Shell Pradėti su „PowerShell“ (administratoriumi) „“ („Default“) „C“: „Windows“ sistemoje „WindowsPowerShell v1.0 powerhell.exe“ „Command“ „“ &  „Start-Process PowerShell.exe -ArgumentList“ -ExecutionPolicy RemoteSigned -Failas "% 1" "- Verb RunAs"

    Be to, atkreipkite dėmesį į skirtumus tarp eilutės, kuri yra įdėta per „PowerShell“, ir faktinę vertę, kuri patenka į registrą. Visų pirma turėtume apvynioti visą daiktą vienintelėmis citatomis ir dvigubinti vidines citatas, kad išvengtume klaidų komandoje..

    Dabar turite turėti naują kontekstinio meniu įrašą „PowerShell“ scenarijai, pavadintam „Vykdyti su„ PowerShell “(administratorius)“.

    Nauja parinktis sukurs du nuoseklius „PowerShell“ atvejus. Pirmasis yra tik antrosios paleidimo įrenginys, kuris naudoja „Start-Process“ su „-Verb RunAs“ parametru, kad paprašytų naujos sesijos aukščio. Iš ten jūsų scenarijus turėtų būti paleistas su administratoriaus teisėmis, kai spustelėsite UAC spartą.

    Apdailos liesti.

    Yra tik keletas pora, kuri gali padėti padaryti gyvenimą šiek tiek lengviau. Viena vertus, kaip visiškai atsikratyti Notepad funkcijos? Tiesiog nukopijuokite „(Numatytoji)“ reikšmę iš komandų klavišo, esančio Redaguoti (toliau), į tą pačią vietą, esančią „Atidaryti“.

    „C“: „Windows System32“ „WindowsPowerShell “1.0 \ t

    Arba galite naudoti šį „PowerShell“ bitą (žinoma su „Admin“ ir „HKCR“):

    „Set-ItemProperty HKCR“: „Microsoft“ .PowerShellScript.1 „Shell“ atidaryta komanda „(numatytasis)“ „C“: „Windows System32“ „Windows Power PowerShell“ 1.0.0 „powerhell_ise.exe“ „„% 1 ““

    Dar vienas nedidelis erzinimas yra konsolės įprotis dingti, kai scenarijus yra baigtas. Kai taip atsitiks, mes neturime galimybės peržiūrėti scenarijų išvesties klaidoms ar kitai naudingai informacijai. Tai gali būti pasirūpinta, jei kiekvienos scenarijaus pabaigoje, žinoma, užtruksite pauzę. Kita vertus, mes galime modifikuoti „(Numatytasis)“ reikšmes mūsų komandų klavišams, kad būtų įtrauktas parametras „-NoExit“. Toliau pateikiamos modifikuotos vertės.

    (Be administratoriaus prieigos)

    "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-NoExit" "-ExecutionPolicy" "RemoteSigned" "-file" "% 1"

    (Su administratoriaus prieiga)

    „C: Windows System32 WindowsPowerShell v1.0 powerhell.exe“ „Komandos“ „“ ir „Pradėti procesą„ PowerShell.exe -Argumentų sąrašas “-„ Neįeiti “- vykdymasPolicy nuotolinio parašo failas„% 1 “ Verb RunAs "

    Ir, žinoma, mes jums suteiksime ir PowerShell komandas. Paskutinis priminimas: „Elevation & HKCR“!

    (Ne administratorius)

    „Set-ItemProperty HKCR“: „Microsoft“ .PowerShellScript.1 „Shell“ komanda „“ („Default“) „C“: „Windows System32“ „Windows PowerPell“ v1.0 powerhell.exe „„ -NeExit “„ -ExecutionPolicy “„ RemoteSigned ““ -file „% 1“ “

    (Administratorius)

    „Set-ItemProperty“ HKCR: „Microsoft.PowerShellScript.1“ „Shell“ naudojant „PowerShell“ („Admin“) komanda „(numatytasis)“ „C“: „Windows System32“ WindowsPowerShell v1.0 powerhell.exe „-Command“ "" & Pradėti procesą PowerShell.exe -Argumentų sąrašas "-NeExit -ExecutionPolicy RemoteSigned -Failas"% 1 "" - Verb RunAs ""

    Paimkite jį gręžimui.

    Norėdami tai išbandyti, ketiname naudoti scenarijų, kuris gali rodyti mums „ExecutionPolicy“ nustatymus ir ar scenarijus buvo paleistas su „Administrator“ leidimais. Scenarijus bus vadinamas „MyScript.ps1“ ir bus saugomas „D: Scene Lab“ mūsų mėginių sistemoje. Kodas yra žemiau.

    jei (([Security.Principal.WindowsPrincipal]] [Security.Principal.WindowsIdentity] :: GetCurrent ()) IsInRole ([Security.Principal.WindowsBuiltInRole] "Administratorius")) Rašyti išvestį "Veikia kaip administratorius!" Rašyti išvestį „Veikia ribotas!“ Get-ExecutionPolicy -List

    Naudodami „Run with PowerShell“ veiksmą:

    Naudodami veiksmą „Vykdyti su„ PowerShell “(administratoriumi), paspaudę UAC:

    Jei norite parodyti vykdymo procesą veikimo procese, mes galime padaryti Windows galvą, kad failas atėjo iš interneto su šiuo „PowerShell“ kodo kiekiu:

    „Add-Content -Path“ D: scenarijų laboratorija MyScript.ps1 '-Value “[ZoneTransfer]' nZoneId = 3" -Stream "Zone.Identifier"

    Laimei, mes neturėjome išjungti. Priešingu atveju ši klaida būtų tiesiog mirksi ir mes nežinojome!

    „Zone.Identifier“ galima pašalinti šiuo būdu:

    „Clear-Content -Path“ D: scenarijų laboratorija MyScript.ps1 '-Stream' Zone.Identifier '

    Naudingos nuorodos:

    • „PowerShell“ scenarijų paleidimas iš rinkmenų - Daniel Schroeder programavimo dienoraštis
    • Administratoriaus leidimų tikrinimas „PowerShell“ - Hey, Scripting Guy! Dienoraštis