Windowsi seadistamine PowerShelli skriptidega töötamiseks lihtsamaks

Sisukord:

Windowsi seadistamine PowerShelli skriptidega töötamiseks lihtsamaks
Windowsi seadistamine PowerShelli skriptidega töötamiseks lihtsamaks

Video: Windowsi seadistamine PowerShelli skriptidega töötamiseks lihtsamaks

Video: Windowsi seadistamine PowerShelli skriptidega töötamiseks lihtsamaks
Video: Home Wireless Network Setup Part 3 - YouTube 2024, Aprill
Anonim
Windowsil ja PowerShellil on sisseehitatud turvafunktsioonid ja vaikimisi kasutatavad konfiguratsioonid, mille eesmärk on vältida lõppkasutajate kogemata skriptide käivitamist nende igapäevase tegevuse käigus. Kuid kui teie igapäevased tegevused hõlmavad tavapäraselt PowerShelli skriptide kirjutamist ja käitamist, võib see olla pigem ebameeldiv kui kasu. Siin näitab teile, kuidas neid funktsioone ümber töötada, ilma et see ohustaks turvalisust.
Windowsil ja PowerShellil on sisseehitatud turvafunktsioonid ja vaikimisi kasutatavad konfiguratsioonid, mille eesmärk on vältida lõppkasutajate kogemata skriptide käivitamist nende igapäevase tegevuse käigus. Kuid kui teie igapäevased tegevused hõlmavad tavapäraselt PowerShelli skriptide kirjutamist ja käitamist, võib see olla pigem ebameeldiv kui kasu. Siin näitab teile, kuidas neid funktsioone ümber töötada, ilma et see ohustaks turvalisust.

Kuidas ja miks Windows ja PowerShell takistavad skripti täitmist.

PowerShell on tõhusalt käsukogemus ja skriptikeelt, mis on mõeldud Windowsi süsteemides CMD ja partitsüklite asendamiseks. Sellisena võib PowerShelli skript olla suhteliselt konfigureeritud tegema kõik, mida saate käsurealt käsitsi teha. See tähendab, et teie süsteemis on praktiliselt võimalik muuta võimalikke muudatusi oma kasutajakontode piires. Kui saaksite lihtsalt topeltklõpsake PowerShelli skripti ja käivitage see täielike administraatori õigustega, võib selline lihtne liinilaevandus tõesti teie päeva rikkuda:

Get-ChildItem '$env:SystemDrive' -Recurse -ErrorAction SilentlyContinue | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue

ÄRGE käivitage ülaltoodud käsku!

See lihtsalt läbib failisüsteemi ja kustutab kõik võimalused. Huvitav on see, et see ei muuda süsteemi töökindlaks nii kiiresti, kui võite arvata - isegi kui see käib kõrgendatud seansi jooksul. Aga kui keegi helistab pärast töötab see skript, sest nad äkki ei leia oma faile või käivitada mõned programmid, "lülitage see välja ja uuesti sisse" ilmselt lihtsalt viia need Windows Startup Repair, kus nad lähed öeldakse seal miski, mida probleemi lahendamiseks teha saab. Mis võiks olla halvem, selle asemel, et saada skript, mis lihtsalt oma failisüsteemi tühjendab, võidakse sinu sõbrakärast vallutada, kes laadib alla ja installib keylogger või kaugpöördusteenuse. Seejärel võite küsida lisaprobleemide asemel küsimusi politsei pankrottide kohta.

Praeguseks peaks olema selge, miks on teatud asjad vajalikud, et kaitsta lõppkasutajaid endast, nii et rääkida. Aga kogenud kasutajatele, süsteemi administraatorid ja muud geeks on üldiselt (kuigi on ka erandeid) veidi ettevaatlikud need ohud, teades, kuidas kohapeal ja lihtsalt vältida neid ja tahan minna koos saada oma töö teinud. Selleks peavad nad mõne tee blokaadi keelama või töötama:

  • PowerShell ei võimalda vaikimisi välist skripti täitmist. PowerShellis olev ExecutionPolicy seadistus takistab väliste skriptide täitmist vaikimisi kõikides Windowsi versioonides. Mõnes Windowsi versioonis ei luba vaikimisi skripti täitmine üldse. Näitasime, kuidas seda sätet muuta, et lubada PowerShelli skriptide täitmine Windows 7-s, kuid me käsitleme seda ka siin mõnes tasemes.
  • PowerShell ei ole vaikimisi seotud faililaiendiga.PS1. Me tõime selle esialgu meie PowerShelli Geeki kooli seeriasse. Windows määrab vaikeseadme.PS1-failide jaoks, et neid Notepadis avada, selle asemel et saata need PowerShelli käsuviibrisse. See on otseselt ära hoida pahatahtlike skriptide juhusliku täitmise, kui neid lihtsalt topeltklõpsuga tehakse.
  • Mõned PowerShelli skriptid ei tööta ilma administraatori õigustega. Isegi administraatori tasemel kontoga töötades peate kindlate toimingute tegemiseks ikkagi läbi kasutajakontode kontrolli (UAC). Käsurea tööriistade puhul võib see olla natuke tülikas, et öelda vähemalt. Me ei soovi UAC-i keelata, kuid see on ikka kena, kui saame seda natuke lihtsamalt lahendada.

Need samad probleemid on välja toodud ka selles, kuidas PowerShelli skriptide abil partitsifaili kasutada, kui me käime läbi kirjapanemise, et neid ajutiselt ümber käia. Nüüd näitame teile, kuidas oma süsteemi luua pikaajalisema lahendusega. Pidage meeles, et te ei tohiks neid muudatusi üldiselt teha süsteemides, mida ei kasuta ainult teie poolt - vastasel juhul muudate kasutajatel suurema ohtu, et nad võivad töötada samade probleemidega, mida need funktsioonid ennetavad.

.PS1-failiühenduse muutmine.

Esimene, ja võib-olla ennekõike pahatahtlik ringi liikumine on PSPS-failide vaikimisi seos. Selliste failide ühendamine soovimatute skriptide juhusliku täitmisega on mõni muu kui PowerShell.exe. Aga arvestades, et PowerShell kaasas integreeritud skripti keskkonda (ISE), mis on loodud spetsiaalselt redigeerimise PowerShell skripte, miks me tahame avada.PS1 faile Notepad vaikimisi? Isegi kui te pole valmis täielikuks üleminekuks topeltklõpsuga käivitatud funktsiooni lubamisele, soovite ilmselt neid seadeid kohandada.

Võite muuta.PS1-failiühingu mis tahes programmi vajutades Vaikimisi programmide juhtpaneeli abil, kuid otse registrisse kaevamine annab teile veidi kontrolli selle üle, kuidas faile avatakse. See võimaldab määrata või muuta täiendavaid võimalusi, mis on saadaval.PS1-failide kontekstimenüüs. Ärge unustage varundada registrit enne seda!

PowerShelli skriptide avamise kontrollimise registri sätted salvestatakse järgmisesse asukohta:

HKEY_CLASSES_ROOTMicrosoft.PowerShellScript.1Shell

Nende seadete uurimiseks, enne kui hakkate neid muutma, vaadake seda võtit ja selle alamvõtmeid Regeditiga. Shelli võtmel peaks olema ainult üks väärtus "(Vaikimisi)", mis on seatud "Ava". See on näpunäide vaikimisi toimingule faili topeltklõpsamiseks, mida me näeme alamvõtmetes.

Laienda Shell-klahvi ja näete kolme alamvõtmega. Igaüks neist kujutab endast PowerShelli skriptide jaoks spetsiifilist toimingut.

Võite iga klahvi laiendada väärtuste uurimiseks, kuid need on põhimõtteliselt võrdsed järgmiste vaikeväärtustega:
Võite iga klahvi laiendada väärtuste uurimiseks, kuid need on põhimõtteliselt võrdsed järgmiste vaikeväärtustega:
  • 0 - käivita PowerShelliga. PowerShelli käivitamine on PowerShelli skriptide kontekstimenüüs juba olev variant. Teksti lihtsalt tõmmatakse muust asukohast, selle asemel et kasutada võti nime nagu teised. Ja see pole ikka vaikese topeltklõpsu toiming.
  • Redigeeri - avaneb PowerShell ISE-is. See muudab tunduvalt mõttekas kui Notepad, kuid peate ikkagi parema nupuga klõpsama.PS1-faili, et teha seda vaikimisi.
  • Ava - ava Notepadis. Pange tähele, et see võti on ka string, mis on salvestatud Shell-klahvi väärtuses "(Default)". See tähendab, et topeltklõps failil avab selle ja seda toimingut kasutatakse tavaliselt märkmikuna.

Kui soovite kinni hoida olemasolevatel eelnevalt loodud käsustringidel, saate lihtsalt muuta Shell-klahvi väärtusega "(Vaikimisi)", et viia vastav võtme nimi, mis vastab sellele, mida soovite topeltklõpsamiseks teha. Seda saab hõlpsasti teha Regeditist, või võite kasutada õppetundidest saadud õppetükki, et uurida registrit PowerShelliga (pluss väike PSDrive tweak), et alustada uuesti kasutatava skripti loomist, mis suudab teie süsteemid teie jaoks seadistada. Allpool toodud käsud peavad käivituma kõrgendatud PowerShelli seansist, mis sarnaneb administraatorina CMD-ga.

Esiteks, soovid konfigureerida PSDrive HKEY_CLASSES_ROOT jaoks, kuna see pole vaikimisi häälestatud. Selle käsk on:

New-PSDrive HKCR Registry HKEY_CLASSES_ROOT

Nüüd saate navigeerida ja muuta registrivõtmeid ja väärtusi HKEY_CLASSES_ROOT'is, nagu oleksite tavalistes HKCU ja HKLM PSDrivesides.

Topeltklõpsamise seadistamiseks otse PowerShelli skriptide käivitamiseks:

Set-ItemProperty HKCR:Microsoft.PowerShellScript.1Shell '(Default)' 0

Topeltklõpsamise seadistamiseks PowerShelli ISE-i PowerShelli skriptide avamiseks tehke järgmist.

Set-ItemProperty HKCR:Microsoft.PowerShellScript.1Shell '(Default)' 'Edit'

Vaikimisi väärtuse taastamine (topeltklõpsates, et avada PowerShelli skripte Notepadis):

Set-ItemProperty HKCR:Microsoft.PowerShellScript.1Shell '(Default)' 'Open'

See on lihtsalt peamine topeltklikkide toimingu muutmine. Me lähemalt täpsustame, kuidas kohandada PowerShelli skriptide käsitsemist, kui nad PowerShellis Exploreris avatakse järgmises jaotises. Pidage meeles, et piirangud takistavad psdriivide püsimist kogu seansside jooksul. Niisiis soovite tõenäoliselt lisada uue-PSDrive-rida selle konfigureerimise skripti alguses, mille olete selleks loonud, või lisage see PowerShelli profiilile. Vastasel juhul peate enne selle muudatuste tegemist muutma seda käsitsi käsitsi.

PowerShell ExecutionPolicy seadistuse muutmine.

PowerShelli ExecutionPolicy on veel üks kaitsetase pahatahtlike skriptide sooritamise eest. Selleks on mitu võimalust ja seda saab paariks muuta. Kõigist kõige turvalisematest on saadaval järgmised võimalused:

  • Piiratud - skripte ei lubata käitada. (Enamiku süsteemide vaikeseade.) See isegi takistab teie profiili skripti töötamist.
  • AllSigned - kõik skriptid peavad olema usaldusväärse kirjastaja poolt digitaalselt allkirjastatud, et nad töötaksid ilma kasutajat viitamata. Kirjanike allkirjastatud skriptid, mis on selgesõnaliselt määratletud kui ebausaldusväärsed, või skripte, mida pole digitaalselt allkirjastatud, ei käivitu. PowerShell küsib kasutajalt kinnitust, kui skript on allkirjastanud väljaandja, kes ei ole veel usaldusväärseks või usaldatud. Kui te pole oma profiiliskripti digitaalselt allkirjastanud ja usaldate seda allkirja, ei saa seda käivitada. Olge ettevaatlik, millistele väljaandjatele te usaldate, sest võite ikka lõpuks käituda pahatahtlikke skripte, kui usaldate valet.
  • RemoteSigned - Internetis allalaetud skriptidest on see tegelikult sama kui "AllSigned". Kuid kohalikult loodud skripte või muudest allikatest kui Internetti imporditud skripte lubatakse ilma kinnitusteta viivita. Siin peate olema ka ettevaatlik, milliseid digitaalallkirju te usaldate, kuid veel hoolikamalt allkirjastatud skriptidest, mille valite käitamiseks. See on kõrgeim turvalisuse tase, mille alla saate tööprofiili skripti, ilma et peaksite seda digitaalselt allkirjastama.
  • Piiranguteta - kõikidel skriptidel on lubatud käivitada, kuid Interneti-skriptidelt nõutakse kinnitusteavet. Sellest hetkest alates on täiesti teie ülesanne vältida usaldatavaid skripte.
  • Bypass - kõik töötab ilma hoiatuseta. Ole ettevaatlik selle ühega.
  • Määratlemata - praeguses ulatuses ei määratleta ühtegi poliitikat. Seda kasutatakse selleks, et võimaldada madalamate rakenduspiirkondade (üksikasjad allpool) määratletud poliitikavaldkondade või OS-i vaikeväärtuste langetamist.

Määratlemata kirjelduse kohaselt võib ülaltoodud eeskirju seada ühes või mitmes erinevas ulatuses. Saate kasutada Get-ExecutionPolicy'i -List parameetrit, et näha kõiki rakenduspiirkondi ja nende praegust konfiguratsiooni.

Piirkonnad on loetletud ülimuslikkuse järjekorras, kusjuures ülemine piir määrab üle kõik teised. Kui ükski poliitika pole määratletud, läheb süsteem tagasi selle vaikeseadetele (enamasti on see piiratud).
Piirkonnad on loetletud ülimuslikkuse järjekorras, kusjuures ülemine piir määrab üle kõik teised. Kui ükski poliitika pole määratletud, läheb süsteem tagasi selle vaikeseadetele (enamasti on see piiratud).
  • MachinePolicy esindab rühmituspoliitikat arvuti tasemel. Seda kohaldatakse üldiselt ainult domeenis, kuid seda saab teha ka kohapeal.
  • UserPolicy esindab kasutajale kehtivat rühmituspoliitikat. Seda kasutatakse tavaliselt ka ettevõtluskeskkondades.
  • Protsess on selle PowerShelli juhtumi spetsiifiline ulatus. Selles ulatuses oleva poliitika muudatused ei mõjuta teisi PowerShelli tööprotsesse ja need ei toimi pärast selle seansi lõppu. Seda saab seadistada rakenduse -ExecutionPolicy parameetriga, kui PowerShell käivitatakse, või seda saab seansi jooksul seada sobiva Set-ExecutionPolicy süntaksiga.
  • CurrentUser on ulatus, mis on konfigureeritud kohalikus registris ja kehtib kasutajakonto kohta, mida kasutatakse PowerShelli käivitamiseks. Seda ulatust saab muuta Set-ExecutionPolicy'iga.
  • LocalMachine on ulatus, mis on konfigureeritud kohalikus registris ja mida kohaldatakse kõikidele süsteemi kasutajatele. See on vaikimisi rakendusala, mida muudetakse juhul, kui Set-ExecutionPolicy käivitatakse ilma -Scope parameetriks. Kuna see kehtib kõigi süsteemi kasutajate kohta, saab seda muuta ainult kõrgendatud seansi ajal.

Kuna see artikkel on peamiselt turvalisuse hõlbustamine, et hõlbustada kasutatavust, on meil vaid mure kolmest madalamast ulatusest. MachinePolicy ja UserPolicy seaded on tõesti kasulikud ainult siis, kui soovite jõustada piiravat poliitikat, mida pole lihtsalt lihtsalt mööda pandud. Hoides oma muudatusi protsessi tasemel või allpool, võime igal ajal lihtsalt kasutada mis tahes poliitikavaldkonda, mida peame konkreetse olukorra jaoks asjakohaseks.

Turvalisuse ja kasutatavuse tasakaalu säilitamiseks on ekraanipildis näidatud poliitika tõenäoliselt parim. Kohaliku masina reegli piiramine üldiselt takistab skriptide käitamist kellegi poolt, välja arvatud teie jaoks. Loomulikult saavad selle kasutajaid mööda minna, kes teavad, mida nad teevad ilma palju vaeva. Kuid see peaks hoida kõik mitte-tech-savvy kasutajad juhuslikult käivitada midagi katastroofilist PowerShell. Kui kasutate käsku CurrentUser (st teie) kui piiramatut režiimi, saate skripte käsitsi käsitsi käsitsi teha, kuid sulle meeldib, kuid jääb internetis allalaetud skriptide meeldetuletusest ettevaatusele. Protsessi tasemel tuleks RemoteSigned seadet otsides PowerShell.exe või (nagu me ka allpool) teha registri väärtustes, mis juhivad PowerShelli skriptide käitumist. See võimaldab hõlpsalt topeltklõpsu käivitada funktsioone kõigile kirjutatavatele skriptidele, pannes siiski suurema tõkke väliste allikate (potentsiaalselt pahatahtlike) skriptide tahtmatu täitmise eest. Me tahame seda siin teha, sest skripti on juhuslikult topeltklõpsamiseks palju lihtsam kui tavaliselt, kui kutsuda seda interaktiivse seansi abil käsitsi.

Käimasoleva kasutaja ja LocalMachine'i eeskirjade seadistamiseks, nagu ülaltoodud ekraanipildil, käivitage PowerShelli ülestõusmise seast järgmised käsked:

Set-ExecutionPolicy Restricted Set-ExecutionPolicy Unrestricted -Scope CurrentUser

Exploreri käivitatavate skriptide RemoteSigned-poliitika jõustamiseks peame muutma ühe registrivõtme varem väärtust. See on eriti oluline, sest sõltuvalt PowerShelli või Windowsi versioonist võib vaikimisi seadistada kõik ExecutionPolicy'i seaded, välja arvatud AllSigned. Selleks, et näha, milline on teie arvuti jaoks praegu kasutatav konfiguratsioon, saate seda käsku käivitada (veendudes, et kõigepealt kaardistatakse HKCR PSDrive):

Get-ItemProperty HKCR:Microsoft.PowerShellScript.1ShellCommand | Select-Object '(Default)'

Teie vaikekonfiguratsioon on ilmselt üks kahest järgnevast stringist või midagi üsna sarnast:

(Vaadake Windows 7 SP1 x64, PowerShell 2.0-ga)

'C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-file' '%1'

(Vaadake Windows 8.1 x64, PowerShell 4.0-ga)

'C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-Command' 'if((Get-ExecutionPolicy ) -ne 'AllSigned') { Set-ExecutionPolicy -Scope Process Bypass }; & '%1''

Esimene ei ole liiga halb, sest kõik, mis see on, on skripti käivitamine olemasolevate ExecutionPolicy seadistuste all. Seda võiks paremaks teha, kehtestades rangemaid piiranguid õnnetusjuhtumiga toimingute jaoks, kuid algselt ei kavatseta see ikkagi topeltklõpsu käivitada ja vaikimisi reeglid on üldjuhul piiratud. Teine võimalus on siiski täieliku ümbersõidu mis tahes ExecutionPolicy'ist, mille te tõenäoliselt asute - isegi piiratud. Kuna möödaviigu rakendatakse protsessi ulatuses, mõjutab see ainult seansse, mis käivitatakse Exploreril skriptide käivitamisel. Kuid see tähendab, et võite lõpuks käivitada skriptid, mida võite muul juhul eeldada (ja soovite) keelata oma poliitika.

Et määrata Protsessi taseme ExecutionPolicy skriptidest, mis käivitati Explorerist, peate vastavalt ülaltoodud ekraanipildile muutma sama registri väärtust, mille me just küsisime. Seda saate teha käsitsi Regeditiga, muutes selle järgmisega:

'C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-ExecutionPolicy' 'RemoteSigned' '-file' '%1'

Võite ka PowerShelli seadeid muuta, kui soovite. Ärge unustage seda teha kõrgendatud seanssist, kaardistades HKCR PSDrive.
Võite ka PowerShelli seadeid muuta, kui soovite. Ärge unustage seda teha kõrgendatud seanssist, kaardistades HKCR PSDrive.

Set-ItemProperty HKCR:Microsoft.PowerShellScript.1ShellCommand '(Default)' ''C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-ExecutionPolicy' 'RemoteSigned' '-file' '%1''

Käivitage PowerShelli skriptid administraatorina.

Nagu on ka halb idee UAC-i täielikult keelata, on ka halva turvalisuse tava skriptide või kõrgendatud privileegidega programmide käivitamiseks, kui te ei pea neid tegema operatsioone, mis vajavad administraatori juurdepääsu. Seega ei ole soovitatav ehitada UAC-i viirust PowerShelli skriptide vaiketegevusele. Kuid me võime lisada uue kontekstimenüü võimaluse, mis võimaldab meil hõlpsasti skripte kõrgematel seanstel käidelda, kui meil seda vaja on. See on sarnane meetodiga, mida kasutatakse kõikide failide kontekstimenüüst "Ava koos märkmetega" lisamiseks - kuid siin me kavatseme ainult PowerShelli skripte sihtida. Samuti kavatseme üle kanda mõnes varasemas artiklis kasutatud tehnikaid, kus me kasutasime PowerShelli skripti käivitamiseks registripartiide asemel partifaili.

Selleks Regeditis, pöörduge tagasi Shelli klahviga aadressil:

HKEY_CLASSES_ROOTMicrosoft.PowerShellScript.1Shell

Seal loo uus alamvõti. Helistage sellele "Run With PowerShell (Admin)". Selle all looge teine all-võti nimega "Käsk".Seejärel määrake käsku Command (Command) väärtuseks "(Default)":

'C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-Command' ''& {Start-Process PowerShell.exe -ArgumentList '-ExecutionPolicy RemoteSigned -File '%1'' -Verb RunAs}'

Image
Image

Toimides PowerShellis samaaegselt, vajab see seekord tegelikult kolme rida. Üks iga uue võti jaoks ja üks, mis määrab käsu jaoks väärtuse "(Vaikimisi)". Ärge unustage kõrgus ja HKCR kaardistamine.

New-Item 'HKCR:Microsoft.PowerShellScript.1ShellRun with PowerShell (Admin)' New-Item 'HKCR:Microsoft.PowerShellScript.1ShellRun with PowerShell (Admin)Command' Set-ItemProperty 'HKCR:Microsoft.PowerShellScript.1ShellRun with PowerShell (Admin)Command' '(Default)' ''C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-Command' ''& {Start-Process PowerShell.exe -ArgumentList ''-ExecutionPolicy RemoteSigned -File '%1''' -Verb RunAs}''

Samuti pöörake hoolikalt tähelepanu PowerShelli sisestatud stringi ja registrisse siseneva tegeliku väärtuse erinevustele. Eelkõige peame pakkuma kogu asja ühekordse hinnapakkumistega ja topeltama sisemiste üksikpakkumistega, et vältida käskude analüüsimisel vigu.

Nüüd peaks teil olema PowerShelli skriptide uus kontekstimenüü kirje, mille nimi on "Run With PowerShell (Admin)".

Uus variant tekitab kaks järjestikust PowerShelli eksemplari. Esimene on lihtsalt teise käivitusprogramm, mis uue seansi kõrguse nõudmiseks kasutab Start-protsessi parameetriga -Verb RunAs. Sealt peaks teie skript olema võimeline töötama administraatori õigustega pärast UAC-i viipa klõpsamist.
Uus variant tekitab kaks järjestikust PowerShelli eksemplari. Esimene on lihtsalt teise käivitusprogramm, mis uue seansi kõrguse nõudmiseks kasutab Start-protsessi parameetriga -Verb RunAs. Sealt peaks teie skript olema võimeline töötama administraatori õigustega pärast UAC-i viipa klõpsamist.

Viimistlus puudutab.

Sellele on veel paar täiendust, mis aitavad muuta elu veelgi lihtsamaks. Ühe jaoks, kuidas täielikult Notepadist vabaneda? Lihtsalt kopeeri väärtus "(Vaikimisi)" menüükäsuga Redigeeri käsklusnupule (alla), samasse asukohta jaotises Ava.

'C:WindowsSystem32WindowsPowerShellv1.0powershell_ise.exe' '%1'

Või võite kasutada seda PowerShelli natuke (ka muidugi Admin & HKCRiga):

Set-ItemProperty HKCR:Microsoft.PowerShellScript.1ShellOpenCommand '(Default)' ''C:WindowsSystem32WindowsPowerShellv1.0powershell_ise.exe' '%1''

Veel üks väiksem pahameelt on konsooli harjumus kaduda, kui skript on valmis. Kui see juhtub, pole meil mingit võimalust skripti väljundi üle vaadata vigade või muu kasuliku teabe jaoks. Seda saab hoolitseda, loomulikult pannes pausi iga oma skripti lõpus. Samuti võime muuta meie käsuklahvide "(Default)" väärtusi, et lisada parameeter "-NoExit". Allpool on toodud muudetud väärtused.

(Juurdepääseta administraatorile)

'C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-NoExit' '-ExecutionPolicy' 'RemoteSigned' '-file' '%1'

(Administraatori juurdepääsuga)

'C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-Command' ''& {Start-Process PowerShell.exe -ArgumentList '-NoExit -ExecutionPolicy RemoteSigned -File '%1'' -Verb RunAs}'

Ja muidugi me anname teile need ka PowerShelli käskudes. Viimane meeldetuletus: Elevation & HKCR!

(Mitte-administraator)

Set-ItemProperty HKCR:Microsoft.PowerShellScript.1ShellCommand '(Default)' ''C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-NoExit' '-ExecutionPolicy' 'RemoteSigned' '-file' '%1''

(Admin)

Set-ItemProperty 'HKCR:Microsoft.PowerShellScript.1ShellRun with PowerShell (Admin)Command' '(Default)' ''C:WindowsSystem32WindowsPowerShellv1.0powershell.exe' '-Command' ''& {Start-Process PowerShell.exe -ArgumentList ''-NoExit -ExecutionPolicy RemoteSigned -File '%1''' -Verb RunAs}''

Võttes seda spiniks.

Selle katsetamiseks kavatseme kasutada skripti, mis näitab meile ExecutionPolicy seadistusi ja kas skript käivitati administraatori õigustega või mitte. Skripti nimetatakse "MyScript.ps1" ja salvestatakse meie proovisüsteemis "D: Script Lab". Kood on allpool viidates.

if(([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {Write-Output 'Running as Administrator!'} else {Write-Output 'Running Limited!'} Get-ExecutionPolicy -List

Kasutades toimingu Run With PowerShell:

Rakenduse Run With PowerShell (administraator) abil pärast UAC-i klõpsamist:
Rakenduse Run With PowerShell (administraator) abil pärast UAC-i klõpsamist:
Protsessi ulatuse demonstreerimiseks ExecutionPolicy'is saame Windowsi arvates, et fail pärineb Internetist selle väikese PowerShelli koodiga:
Protsessi ulatuse demonstreerimiseks ExecutionPolicy'is saame Windowsi arvates, et fail pärineb Internetist selle väikese PowerShelli koodiga:

Add-Content -Path 'D:Script LabMyScript.ps1' -Value '[ZoneTransfer]`nZoneId=3' -Stream 'Zone.Identifier'

Õnneks oli meil lubatud -NoExit. Vastasel juhul oleks see viga just mosleks ja me ei oleks seda teadnud!
Õnneks oli meil lubatud -NoExit. Vastasel juhul oleks see viga just mosleks ja me ei oleks seda teadnud!

Zone.Identifier saab sellega eemaldada:

Clear-Content -Path 'D:Script LabMyScript.ps1' -Stream 'Zone.Identifier'

Kasulikud viited:

  • PowerShelli skriptide käitamine partiifailist - Daniel Schroederi programmeerimisblog
  • PowerShellis administraatori õiguste kontrollimine - hey, scripting guy! Blogi

Soovitan: