Početna » kako da » Kako lakše konfigurirati Windows za rad s PowerShell skriptama

    Kako lakše konfigurirati Windows za rad s PowerShell skriptama

    Windows i PowerShell imaju ugrađene sigurnosne značajke i zadane konfiguracije namijenjene sprečavanju krajnjih korisnika da slučajno pokrenu skripte tijekom svojih svakodnevnih aktivnosti. Međutim, ako vaše dnevne aktivnosti rutinski uključuju pisanje i izvođenje vlastitih PowerShell skripti, to može biti više smetnja nego korist. Ovdje ćemo vam pokazati kako se zaobići ove značajke bez potpunog ugrožavanja sigurnosti.

    Kako i zašto Windows & PowerShell sprječava izvršavanje skripte.

    PowerShell je zapravo naredbena ljuska i skriptni jezik koji zamjenjuje CMD i batch skripte na Windows sustavima. Kao takav, PowerShell skripta može biti konfigurirana tako da može učiniti sve što možete ručno iz naredbenog retka. To je jednako praktično svakoj mogućoj promjeni na vašem sustavu, do ograničenja na vašem korisničkom računu. Dakle, ako možete samo dvaput kliknuti PowerShell skriptu i pokrenuti je s potpunim administratorskim ovlastima, jednostavna jednostruka omotnica kao što je ova stvarno bi vam mogla uništiti dan:

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

    NEMOJTE izvoditi gornju naredbu!

    To jednostavno prolazi kroz datotečni sustav i briše sve što može. Zanimljivo je da to ne može učiniti sustav nefunkcionalnim tako brzo kao što možete zamisliti - čak i kada se pokrene s povišene sesije. Ali ako vas netko nazove nakon pokretanja ove skripte, jer odjednom ne mogu pronaći svoje datoteke ili pokrenuti neke programe, "isključivanje i ponovno uključivanje" vjerojatno će ih samo dovesti u sustav Windows Startup Repair gdje će im biti rečeno da postoji ništa što se može učiniti da se problem riješi. Što bi moglo biti gore, umjesto da dobijete skriptu koja samo obara njihov datotečni sustav, vaš prijatelj može biti prevaren tako da pokrene onaj koji preuzima i instalira keylogger ili uslugu daljinskog pristupa. Zatim, umjesto da vam postavljaju pitanja o Popravci pri pokretanju, mogu na kraju zatražiti od policije neka pitanja o bankovnim prijevarama!

    Do sada bi trebalo biti jasno zašto su određene stvari potrebne kako bi se zaštitili krajnji korisnici od njih samih. No, moćni korisnici, administratori sustava i drugi geekovi su općenito (iako postoje iznimke) malo oprezniji od ovih prijetnji, znajući kako ih uočiti i lako ih izbjeći, i samo žele nastaviti s obavljanjem svog posla. Da biste to učinili, morat ćete ili onemogućiti ili zaobići nekoliko blokova ceste:

    • PowerShell ne dopušta vanjsko izvođenje skripte prema zadanim postavkama.
      Postavka ExecutionPolicy u programu PowerShell sprječava izvođenje vanjskih skripti prema zadanim postavkama u svim verzijama sustava Windows. U nekim verzijama sustava Windows, zadana vrijednost uopće ne dopušta izvođenje skripte. Pokazali smo vam kako promijeniti ovu postavku u Kako dopustiti izvršavanje PowerShell skripti na Windowsu 7, ali ćemo je pokriti i na nekoliko razina.
    • PowerShell po defaultu nije povezan s ekstenzijom .PS1 datoteke.
      To smo na početku izneli u seriji PowerShell Geek School. Windows postavlja zadanu radnju za .PS1 datoteke kako bi ih otvorio u Notepadu, umjesto da ih šalje u PowerShell interpretator naredbi. Time se izravno sprječava slučajno izvršavanje zlonamjernih skripti kada se oni jednostavno dvaput kliknu.
    • Neka PowerShell skripta neće raditi bez administratorskih dozvola.
      Čak i ako imate administratorski račun na razini administratora, morate proći kroz kontrolu korisničkih računa (UAC) kako biste izvršili određene radnje. Za alate naredbenog retka to može biti pomalo nezgrapan. Ne želimo onemogućiti UAC, ali je još uvijek lijepo kada možemo olakšati rješavanje problema.

    Ta ista pitanja pojavljuju se u Kako koristiti batch datoteku kako bi PowerShell skripte lakše pokrenuli, gdje vas vodimo kroz pisanje batch datoteke kako biste ih privremeno obišli. Pokazat ćemo vam kako postaviti sustav dugoročnijim rješenjem. Imajte na umu da te promjene ne biste trebali općenito provoditi na sustavima koje ne koristite isključivo vi - u suprotnom, drugi korisnici imaju veći rizik od istog problema s kojim se te značajke sprječavaju..

    Promjena asocijacije .PS1 datoteke.

    Prvo, a možda i prije svega, uznemiravanje za kretanje je zadana asocijacija za .PS1 datoteke. Povezivanje tih datoteka s bilo čime osim PowerShell.exe ima smisla za sprečavanje slučajnog izvršavanja nepoželjnih skripti. No, s obzirom da PowerShell dolazi s integriranim okruženjem za skriptiranje (ISE) koje je posebno dizajnirano za uređivanje PowerShell skripti, zašto bismo htjeli otvoriti .PS1 datoteke u Notepadu po defaultu? Čak i ako niste spremni u potpunosti prebaciti se na omogućavanje funkcije dvostrukog klika za pokretanje, vjerojatno ćete htjeti prilagoditi te postavke.

    Možete promijeniti pridruživanje datoteke .PS1 u bilo koji program koji želite s upravljačkom pločom Zadani programi, ali kopanje izravno u Registar će vam dati malo više kontrole nad točno kako će se datoteke otvoriti. To vam također omogućuje postavljanje ili promjenu dodatnih opcija koje su dostupne u kontekstnom izborniku za .PS1 datoteke. Ne zaboravite napraviti sigurnosnu kopiju registra prije nego to učinite!

    Postavke registra koje kontroliraju način otvaranja PowerShell skripti pohranjuju se na sljedećem mjestu:

    HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell

    Da biste istražili te postavke prije nego što ih promijenimo, pogledajte ovaj ključ i njegove pod-tipke pomoću Regedita. Tipka Shell treba imati samo jednu vrijednost, "(Default)", koja je postavljena na "Open". Ovo je pokazivač na zadanu radnju za dvostruki klik na datoteku, koju ćemo vidjeti u pod-ključevima.

    Proširite ključ Shell i vidjet ćete tri pod-tipke. Svaki od njih predstavlja radnju koju možete izvršiti i koja je specifična za PowerShell skripte.

    Možete proširiti svaki ključ kako biste istražili vrijednosti unutar njih, ali one u osnovi odgovaraju sljedećim zadanim postavkama:

    • 0 - Pokreni s PowerShell. "Pokreni s PowerShellom" zapravo je ime opcije koja se već nalazi u kontekstnom izborniku za PowerShell skripte. Tekst je samo povučen s drugog mjesta umjesto da se koristi ime ključa kao ostali. I još uvijek nije zadana akcija dvostrukog klika.
    • Uredi - otvori u programu PowerShell ISE. To čini mnogo više smisla od Notepada, ali još uvijek morate kliknuti desnom tipkom miša na .PS1 datoteku da biste to učinili prema zadanim postavkama.
    • Otvori - Otvori u programu Notepad. Imajte na umu da je ovo ime ključa također i niz pohranjenih u “(Default)” vrijednosti tipke Shell. To znači da će se dvostrukim klikom na datoteku "otvoriti" i da je akcija normalno postavljena za korištenje Notepada.

    Ako se želite držati već pripremljenih nizova naredbi, možete samo promijeniti vrijednost "(Zadano)" u ključu Shell tako da odgovara nazivu ključa koji odgovara onome što želite dvostrukim klikom. To se lako može obaviti unutar Regedita, ili možete naučiti lekcije naučene iz našeg vodiča o istraživanju registra pomoću PowerShell (plus mali PSDrive ugađanje) da biste počeli graditi skriptu za višekratnu upotrebu koja može konfigurirati vaše sustave za vas. Dolje navedene naredbe moraju se pokrenuti s povišene PowerShell sesije, slično kao da je CMD pokrenut kao administrator.

    Prvo ćete htjeti konfigurirati PSDrive za HKEY_CLASSES_ROOT jer to nije postavljeno prema zadanim postavkama. Naredba za ovo je:

    Novi PSDrive HKCR registar HKEY_CLASSES_ROOT

    Sada možete kretati i uređivati ​​ključeve i vrijednosti registra u HKEY_CLASSES_ROOT kao što biste to činili u uobičajenim HKCU i HKLM PSDrivesima.

    Da biste konfigurirali dvostruki klik da biste pokrenuli PowerShell skripte izravno:

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

    Za konfiguriranje dvostrukog klika za otvaranje PowerShell skripti u PowerShell ISE:

    Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell '(zadano) "Uredi"

    Za vraćanje zadane vrijednosti (postavlja dvostruki klik za otvaranje PowerShell skripti u Notepadu):

    Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell '(zadano) "Otvori"

    To je samo osnova promjene zadane akcije dvostrukog klika. U sljedećem odjeljku detaljnije ćemo obraditi prilagođavanje načina na koji se obrađuju skripte za PowerShell kada se otvaraju u programu PowerShell iz Explorera. Imajte na umu da opseg sprječava da PSDrives ostane na svim sesijama. Dakle, vjerojatno želite uključiti liniju New-PSDrive na početku bilo koje konfiguracijske skripte koju izrađujete u tu svrhu, ili je dodati u svoj PowerShell profil. Inače ćete morati ručno pokrenuti taj bit prije pokušaja da na ovaj način napravite promjene.

    Promjena postavke PowerShell ExecutionPolicy.

    PowerShell's ExecutionPolicy je još jedan sloj zaštite od izvršavanja zlonamjernih skripti. Postoji više opcija za to i nekoliko različitih načina na koje se može postaviti. Od većine do najsigurnijih, dostupne opcije su:

    • Ograničeno - Nije dopušteno pokretanje skripti. (Zadana postavka za većinu sustava.) To će čak spriječiti pokretanje skripte profila.
    • AllSigned - sve skripte moraju biti digitalno potpisane od pouzdanih izdavača za pokretanje bez traženja od korisnika. Skripte koje potpisuju izdavači koji su eksplicitno definirani kao nepovjerljivi ili skripte koje uopće nisu digitalno potpisane, neće se prikazivati. PowerShell će od korisnika zatražiti potvrdu je li skript potpisao izdavač koji još nije definiran kao pouzdan ili nepovjerljiv. Ako niste digitalno potpisali skriptu profila i ustanovili povjerenje u taj potpis, neće se moći prikazivati. Budite oprezni s izdavačima u koje imate povjerenja, jer i dalje možete izvoditi zlonamjerne skripte ako vjerujete pogrešnom.
    • RemoteSigned - Za skripte preuzete s Interneta, to je zapravo isto kao i "AllSigned". Međutim, skripte kreirane na lokalnoj razini ili uvezene iz drugih izvora osim Interneta smiju se izvoditi bez ikakvog prompta za potvrdu. Ovdje također trebate paziti na to koji digitalni potpisi imate povjerenja, ali čak i budite pažljiviji na ne-potpisane skripte koje odaberete za pokretanje. Ovo je najviša razina sigurnosti pod kojom možete imati skriptu za radni profil bez potrebe za digitalnim potpisivanjem.
    • Neograničeno - Sve skripte smiju se izvoditi, ali za skripte s Interneta bit će potreban upit za potvrdu. Od tog trenutka ovisi o vama da izbjegavate pokretanje nepouzdanih skripti.
    • Obilaznica - Sve radi bez upozorenja. Budite oprezni s ovim.
    • Nedefinirano - u trenutnom opsegu nije definirano pravilo. To se koristi za dopuštanje vraćanja politika definiranih u nižim opsezima (više detalja u nastavku) ili na zadane postavke OS-a.

    Kao što je opisano u opisu Nedefinirano, gore navedena pravila mogu se postaviti u jednom ili više područja. Možete koristiti Get-ExecutionPolicy, s parametrom -List, da biste vidjeli sve opsege i njihovu trenutnu konfiguraciju.

    Opsezi su navedeni u redoslijedu prioriteta, s najvišim definiranim opsegom koji nadjačava sve ostale. Ako pravila nisu definirana, sustav se vraća na zadanu postavku (u većini slučajeva to je ograničeno).

    • MachinePolicy predstavlja grupnu politiku koja je na snazi ​​na razini računala. To se općenito primjenjuje samo u domeni, ali se može obaviti i lokalno.
    • UserPolicy predstavlja pravila grupe koja su na snazi ​​za korisnika. Ovo se također obično koristi samo u poslovnim okruženjima.
    • Proces je opseg specifičan za ovu instancu PowerShell-a. Promjene pravila u ovom opsegu neće utjecati na druge pokrenute PowerShell procese i bit će neučinkovite nakon završetka ove sesije. To se može konfigurirati pomoću parametra -ExecutionPolicy kada se pokrene PowerShell, ili se može postaviti s odgovarajućom sintaksu Set-ExecutionPolicy iz sesije.
    • CurrentUser je opseg koji je konfiguriran u lokalnom registru i primjenjuje se na korisnički račun koji se koristi za pokretanje PowerShell-a. Ovaj se opseg može mijenjati pomoću opcije Set-ExecutionPolicy.
    • LocalMachine je opseg konfiguriran u lokalnom registru i primjenjuje se na sve korisnike sustava. Ovo je zadani opseg koji se mijenja ako se Set-ExecutionPolicy pokrene bez parametra -Scope. Kao što se primjenjuje na sve korisnike sustava, može se promijeniti samo s povišene sesije.

    Budući da je ovaj članak uglavnom vezan uz sigurnost kako bi se olakšala upotrebljivost, samo smo zabrinuti zbog donjih triju područja. Postavke MachinePolicy i UserPolicy su stvarno korisne samo ako želite provoditi restriktivnu politiku koja nije tako jednostavno zaobišla. Držeći naše promjene na razini Procesa ili niže, u svakom trenutku možemo lako koristiti bilo koju postavku politike koju smatramo prikladnom za određenu situaciju.

    Da bi zadržali ravnotežu između sigurnosti i upotrebljivosti, politika prikazana na snimci zaslona vjerojatno je najbolja. Postavljanje politike LocalMachine na Ograničeno općenito sprječava pokretanje skripti od bilo koga osim vas. Naravno, to mogu zaobići korisnici koji znaju što rade bez mnogo truda. No, to bi trebalo spriječiti bilo kakve korisnike koji nisu pametni i koji nisu pametni da slučajno pokrenu nešto katastrofalno u PowerShell-u. Postavljanje CurrentUser (tj. Vas) kao neograničenog omogućuje vam ručno izvršavanje skripti iz naredbenog retka koliko god želite, ali zadržava podsjetnik na oprez za skripte preuzete s Interneta. Postavka RemoteSigned na razini Procesa trebala bi se izvršiti u prečici do PowerShell.exe ili (kao što ćemo vidjeti u nastavku) u vrijednostima Registra koje kontroliraju ponašanje PowerShell skripti. To će omogućiti jednostavnu funkcionalnost dvostrukog klika za pokretanje bilo kakvih skripti koje pišete, dok postavljate jaču prepreku protiv nenamjernog izvršavanja (potencijalno zlonamjernih) skripti iz vanjskih izvora. Želimo to učiniti ovdje jer je mnogo lakše slučajno dvaput kliknuti na skriptu nego što je to općenito zvati ručno iz interaktivne sesije.

    Da biste postavili pravila CurrentUser i LocalMachine kao na slici iznad, pokrenite sljedeće naredbe s povišene sesije PowerShell:

    Set-ExecutionPolicy Restricted Set-ExecutionPolicy Neograničen -Opseg CurrentUser

    Kako bi proveli politiku RemoteSigned na skriptama koje se pokreću iz Explorera, morat ćemo promijeniti vrijednost unutar jednog od ključeva registra koje smo ranije pregledavali. To je osobito važno jer, ovisno o vašoj PowerShell ili Windows verziji, zadana konfiguracija može biti zaobići sve ExecutionPolicy postavke osim AllSigned. Da biste vidjeli koja je trenutna konfiguracija za vaše računalo, možete pokrenuti ovu naredbu (prvo provjerite mapiranje HKCR PSDrive):

    Get-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell Command | Odaberite opciju "(zadano)"

    Vaša zadana konfiguracija vjerojatno će biti jedna od sljedećih dvaju nizova ili nešto slično:

    (Vidljivo na Windows 7 SP1 x64, s PowerShellom 2.0)

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

    (Vidljivo na Windows 8.1 x64, uz PowerShell 4.0)

    "C: Windows System32 WindowsPowerShell v1.0" "" "- Komande" "ako ((Get-ExecutionPolicy) -ne" AllSigned ") Set-ExecutionPolicy-Obim obima procesa; & '% 1 „”

    Prva nije loša, jer sve što radi jest izvršiti skriptu pod postojećim postavkama ExecutionPolicy. Moglo bi biti bolje, primjenom strožih ograničenja za akciju koja je podložnija nesrećama, ali to izvorno nije bilo namijenjeno da se pokrene dvostrukim klikom, a zadana politika je obično ograničena. Druga opcija je, međutim, puna zaobilaznica bilo koje ExecutionPolicy koju ćete vjerojatno imati na mjestu - čak i ograničeno. Budući da će se zaobići primijeniti u opsegu Proces, on utječe samo na sesije koje se pokreću kada se skripte pokreću iz Explorera. Međutim, to znači da možete završiti s pokretanjem skripti koje biste inače mogli očekivati ​​(i želite) da vaše pravilo zabrani.

    Da biste postavili politiku izvršenja na razini procesa za skripte pokrenute iz Explorera, u skladu s prikazom zaslona, ​​morat ćete izmijeniti istu vrijednost registra koju smo upravo upitali. To možete učiniti ručno u programu Regedit promjenom u ovo:

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

    Možete i promijeniti postavku unutar PowerShell-a ako želite. Ne zaboravite to učiniti s povišene sesije, s mapiranim HKCR PSDriveom.

    Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell Command '(Zadano) "" C: Windows System32 WindowsPowerShell v1.0 powerhell.exe "" -ExecutionPolicy "" RemoteSigned "-file" " % 1" ”

    Pokrenite PowerShell skripte kao administrator.

    Baš kao što je loša ideja da se UAC isključi u cijelosti, tako je i loša sigurnosna praksa pokretanja skripti ili programa s povišenim ovlastima osim ako ih zapravo ne trebate za izvođenje operacija koje zahtijevaju administratorski pristup. Stoga se ne preporučuje izgradnja UAC odziva u zadanu radnju za PowerShell skripte. Međutim, možemo dodati novu opciju kontekstnog izbornika kako bismo mogli jednostavno pokretati skripte na povišenim sesijama kada to trebamo. To je slično metodi koja se koristi za dodavanje "Otvori s Notepadom" u kontekstni izbornik svih datoteka - ali ovdje ćemo samo ciljati PowerShell skripte. Također ćemo prenijeti neke tehnike korištene u prethodnom članku, gdje smo koristili skupnu datoteku umjesto hack registra da bismo pokrenuli PowerShell skriptu.

    Da biste to učinili u programu Regedit, vratite se u ključ Shell na adresi:

    HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell

    Ovdje stvorite novi pod-ključ. Nazovite ga "Pokreni s PowerShell (Admin)". Ispod toga, napravite drugi pod-ključ pod nazivom "Command". Zatim postavite vrijednost "(Zadano)" pod Command na ovo:

    "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-Command" "" & Start-Process PowerShell.exe -AggumentList '-ExecutionPolicy RemoteSigned -File "% 1" - Verb RunAs ”

    Ako to učinite u programu PowerShell, ovaj put će vam trebati tri retka. Jedan za svaki novi ključ i jedan za postavljanje "(Zadano)" vrijednosti za naredbu. Ne zaboravite nadmorsku visinu i HKCR mapiranje.

    HKCR s novom stavkom: Microsoft.PowerShellScript.1 Shell Pokreće se s PowerShell (administratorom) 'New-Item' HKCR: Microsoft.PowerShellScript.1 Shell Run sa PowerShell (Admin) Command 'Set-ItemProperty' HKCR: Microsoft.PowerShellScript.1 Shell Pokreće se uz PowerShell (Admin) Command "(Zadano)" "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "Komande" "" &  Start-Process PowerShell.exe -ArgumentList "-ExecutionPolicy RemoteSigned -File \ _"% 1 \ t

    Također, obratite pozornost na razlike između niza koji se stavlja kroz PowerShell i stvarne vrijednosti koja ulazi u Registar. Osobito, moramo obaviti cijelu stvar u pojedinačnim navodnicima, i dvostruko na internim navodnicima, kako bismo izbjegli pogreške u raščlanjivanju naredbi.

    Sada biste trebali imati novi kontekstni izbornik za PowerShell skripte, pod nazivom "Pokreni s PowerShell (Admin)".

    Nova opcija će stvoriti dvije uzastopne instance programa PowerShell. Prvi je samo pokretač za drugi, koji koristi Start-Process s parametrom "-Verb RunAs" za zahtijevanje nadmorske visine za novu sesiju. Odatle, vaša skripta bi trebala moći izvoditi s administratorskim ovlastima nakon što kliknete na UAC prompt.

    Završni dodiri.

    Postoji samo nekoliko dodatnih podešavanja na ovaj način koji mogu pomoći da život bude još lakši. Kao prvo, kako bi se u potpunosti oslobodili funkcije Notepad? Jednostavno kopirajte “(Zadano)” iz Command tipke pod Uredi (dolje), na isto mjesto pod Otvori.

    "C: Windows System32 WindowsPowerShell v1.0 powerhell_ise.exe" "% 1"

    Ili, možete upotrijebiti ovaj dio PowerShell-a (naravno s Adminom i HKCR-om):

    Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell Otvori naredbu '(zadano) "" C: Windows System32 WindowsPowerShell v1.0 powerhell_ise.exe ""% 1 "'

    Još jedna manja smetnja je navika konzole da nestaje nakon što je skripta dovršena. Kada se to dogodi, nemamo priliku pregledati izlaz skripte za pogreške ili druge korisne informacije. To se može riješiti stavljanjem stanke na kraju svakog od vaših scenarija, naravno. Alternativno, možemo promijeniti "(Default)" vrijednosti za naše naredbene tipke kako bismo uključili parametar "-NoExit". U nastavku su izmijenjene vrijednosti.

    (Bez administrativnog pristupa)

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

    (S administrativnim pristupom)

    "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-Command" & "Start-Process PowerShell.exe -ArgumentList '-NoExit -ExecutionPolicy RemoteSigned -File"% 1 " Verb RunAs "

    I naravno, dat ćemo vam i one u PowerShell naredbama. Posljednji podsjetnik: Elevation & HKCR!

    (Non-Admin)

    Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell Command '(Zadano) "" C: Windows System32 WindowsPowerShell v1.0 powerhell.exe "" -NoExit "" -ExecutionPolicy "" RemoteSigned "" -file ""% 1 "'

    (Administrator)

    Set-ItemProperty 'HKCR: Microsoft.PowerShellScript.1 Shell Pokreće se uz PowerShell (Admin) Command "(Zadano)" "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "Komande" "" & Start-Process PowerShell.exe -ArgumentList "-NoExit -ExecutionPolicy RemoteSigned -File \ _"% 1 \ _ "- Verb RunAs" '

    Uzimam ga za vrtnju.

    Da bismo to provjerili, koristit ćemo skriptu koja nam može pokazati postavljene ExecutionPolicy postavke i je li skripta pokrenuta s administratorskim dozvolama ili ne. Skripta će se zvati "MyScript.ps1" i biti pohranjena u "D: Script Lab" na našem uzorku sustava. Kôd je ispod, za referencu.

    if (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent ()). IsInRole ([Security.Principal.WindowsBuiltInRole] "Administrator")) Write-Output 'Izvodi se kao administrator! Write-Output 'Running Limited!' Get-ExecutionPolicy -List

    Koristeći radnju "Pokreni s PowerShellom":

    Koristeći akciju "Pokreni s PowerShell (Admin)", nakon što kliknete UAC:

    Da bismo prikazali ExecutionPolicy u akciji na opsegu Procesa, možemo učiniti da sustav Windows smatra da je ta datoteka došla s Interneta pomoću ovog dijela PowerShell koda:

    Add-Content -Path 'D: Skriptni laboratorij MyScript.ps1' -Value "[ZoneTransfer] 'nZoneId = 3" -Stream' Zone.Identifier '

    Srećom, imali smo -NoExit omogućen. Inače bi ta pogreška samo trepnula, a mi ne bismo znali!

    Zone.Identifier se može ukloniti s ovim:

    Clear-Content -Path 'D: Skriptni laboratorij - MyScript.ps1' -Stream 'Zone.Identifier'

    Korisne reference:

    • Pokretanje PowerShell skripti iz batch datoteke - Blog programiranja Daniela Schroedera
    • Provjera administratorskih dozvola u programu PowerShell - Hej, Scripting Guy! Blog