Kā konfigurēt Windows darbam ar PowerShell skriptiem vieglāk
Windows un PowerShell ir iebūvēti drošības elementi un noklusējuma konfigurācijas, kas paredzētas, lai liegtu tiešajiem lietotājiem nejauši uzsākt skriptus ikdienas darbības laikā. Tomēr, ja jūsu ikdienas aktivitātēs parasti tiek izmantoti jūsu PowerShell skriptu rakstīšana un vadīšana, tas var būt vairāk traucējoši nekā ieguvums. Šeit mēs parādīsim, kā strādāt ar šīm funkcijām, neapdraudot drošību.
Kā un kāpēc Windows un PowerShell novērš skriptu izpildi.
PowerShell ir komandu apvalks un skriptu valoda, kas ir paredzēta, lai aizstātu CMD un partijas skriptus Windows sistēmās. Tādā veidā PowerShell skripts var būt diezgan daudz konfigurēts tā, lai to izdarītu ar komandrindu. Tas ir pielīdzināms praktiski jebkurām izmaiņām jūsu sistēmā, līdz jūsu lietotāja kontā noteiktajiem ierobežojumiem. Tātad, ja jūs varētu vienkārši dubultklikšķināt uz PowerShell skripta un palaist to ar pilnām administratora privilēģijām, vienkāršs viena līnijpārvadātājs, piemēram, varētu patiešām iznīcināt jūsu dienu:
Get-ChildItem "$ env: SystemDrive" -Recurse -ErrorAction SilentlyContinue | Noņemt-vienums -Force -Recurse -ErrorAction SilentlyContinue
NELIETOJIET iepriekš minēto komandu!
Tas vienkārši iet caur failu sistēmu un izdzēš visu, kas tas ir iespējams. Interesanti, ka tas var padarīt sistēmu nedarbojamu tik ātri, kā jūs domājat - pat tad, ja palaist no paaugstinātas sesijas. Bet, ja kāds jums zvana pēc šī skripta palaišanas, jo viņi pēkšņi nespēj atrast savus failus vai palaist dažas programmas, “ieslēgšana un atkal ieslēgšana”, iespējams, tikai novedīs viņus uz Windows palaišanas remontu, kur viņiem tiks paziņots nekas, ko var darīt, lai atrisinātu problēmu. Tas, kas varētu būt sliktāks, ir tas, ka tā vietā, lai iegūtu skriptu, kas vienkārši izgāž savu failu sistēmu, jūsu draugs varētu tikt aplaupīts darbībā, kas lejupielādē un instalē keylogger vai attālās piekļuves pakalpojumu. Tad tā vietā, lai uzdotu jautājumus par starta labošanu, viņi var uzdot policijai dažus jautājumus par banku krāpšanu!
Līdz šim ir jābūt acīmredzamam, kāpēc ir vajadzīgas dažas lietas, lai pasargātu tiešos lietotājus no sevis. Bet enerģijas lietotāji, sistēmas administratori un citi geeks parasti ir (kaut arī ir izņēmumi) mazliet piesardzīgāki par šiem draudiem, zinot, kā tos novērst un viegli izvairīties, un vienkārši gribu turpināt darbu. Lai to izdarītu, viņiem būs jāizslēdz vai jāapstrādā daži ceļa bloki:
- PowerShell nepieļauj ārējo skriptu izpildi pēc noklusējuma.
Iestatījums ExecutionPolicy programmā PowerShell novērš ārējo skriptu izpildi pēc noklusējuma visās Windows versijās. Dažās Windows versijās noklusējums neļauj vispār veikt skriptu izpildi. Mēs parādījām, kā mainīt šo iestatījumu sadaļā Kā atļaut PowerShell skriptu izpildi operētājsistēmā Windows 7, bet mēs to nodrošināsim arī dažos līmeņos. - PowerShell nav pievienots .PS1 faila paplašinājumam pēc noklusējuma.
Mēs to sākotnēji parādījām mūsu PowerShell Geek skolas sērijā. Windows uzstāda noklusējuma .PS1 failu darbību, lai tos atvērtu Notepad, nevis nosūtītu uz PowerShell komandu tulku. Tas ir tieši, lai novērstu nejaušu ļaunprātīgu skriptu izpildi, ja tie vienkārši tiek divreiz noklikšķināti. - Daži PowerShell skripti nedarbosies bez administratora atļaujas.
Pat darbojoties ar administratora līmeņa kontu, jums joprojām ir jāiziet lietotāja konta kontrole (UAC), lai veiktu noteiktas darbības. Komandrindas rīkiem tas var būt mazliet apgrūtinošs. Mēs nevēlamies atspējot UAC, bet tas joprojām ir jauki, ja mēs varam to mazliet vieglāk izskatīt.
Šie paši jautājumi tiek parādīti sadaļā „Kā izmantot sērijveida failu, lai padarītu PowerShell skriptus vieglāk darbināmus”, kur mēs jums ejam, rakstot sērijveida failu, lai uz laiku tos apietu. Tagad mēs jums parādīsim, kā iestatīt savu sistēmu ar ilgtermiņa risinājumu. Ņemiet vērā, ka jūs parasti nevajadzētu veikt šīs izmaiņas sistēmās, kuras jūs neizmantojat tikai citādi - citādi jūs riskējat, ka citi lietotāji var tikt pakļauti tādām pašām problēmām..
Faila asociācijas .PS1 maiņa.
Pirmais, un, iespējams, galvenais, apgrūtinājums, lai apietu, ir noklusējuma .PS1 failu asociācija. Šo failu saistīšana ar kaut ko citu, nevis PowerShell.exe ir lietderīga, lai novērstu nejaušu nevēlamu skriptu izpildi. Bet, ņemot vērā, ka PowerShell nāk ar integrētu skriptu vidi (ISE), kas ir īpaši izstrādāta, lai rediģētu PowerShell skriptus, kāpēc mēs vēlamies atvērt .PS1 failus Notepad? Pat ja neesat gatavs pilnībā pārslēgties uz divkāršu klikšķi, lai palaistu funkcionalitāti, jūs, iespējams, vēlēsieties nomainīt šos iestatījumus.
Jūs varētu mainīt .PS1 faila asociāciju ar jebkuru programmu, kuru vēlaties, izmantojot noklusējuma programmu vadības paneli, bet tieši ievadot reģistrā, jūs nedaudz kontrolēsiet tieši to, kā faili tiks atvērti. Tas arī ļauj iestatīt vai mainīt papildu opcijas, kas ir pieejamas konteksta izvēlnē. Neaizmirstiet veikt reģistra dublējumu, pirms to izdarāt!
Reģistra iestatījumi, kas kontrolē PowerShell skriptu atvēršanu, tiek saglabāti šādā atrašanās vietā:
HKEY_CLASSES_ROOT Microsoft.PowerShellScript.1
Lai iepazītos ar šiem iestatījumiem, pirms mēs tos mainām, apskatiet šo atslēgu un tās apakšatslēgu ar Regedit. Shell taustiņam vajadzētu būt tikai vienai vērtībai “(Default)”, kas ir iestatīta uz “Open”. Tas ir rādītājs uz noklusējuma darbību, veicot dubultklikšķi uz faila, kuru mēs redzēsim apakšklikšķos.
Paplašiniet Shell taustiņu un redzēsiet trīs apakšatslēgu. Katrs no tiem ir darbība, ko var veikt, kas ir raksturīga PowerShell skriptiem.
Jūs varat paplašināt katru taustiņu, lai izpētītu vērtības, bet tās pamatā atbilst šādiem noklusējuma iestatījumiem:
- 0 - Palaist ar PowerShell. “Run with PowerShell” faktiski ir opcijas nosaukums, kas jau ir konteksta izvēlnē PowerShell skriptiem. Teksts tiek vienkārši izvilkts no citas atrašanās vietas, nevis izmantojot atslēgas nosaukumu kā citi. Un tas joprojām nav noklusējuma dubultklikšķi.
- Rediģēt - atvērts programmā PowerShell ISE. Tas nozīmē daudz vairāk jēgas nekā Notepad, bet jums joprojām ir ar peles labo pogu noklikšķiniet uz .PS1 faila, lai to izdarītu pēc noklusējuma.
- Atvērt - Atvērt Notepad. Ņemiet vērā, ka šis atslēgas nosaukums ir arī virkne, kas saglabāta Shell taustiņa “(Default)” vērtībā. Tas nozīmē, ka divreiz noklikšķinot uz faila, tas tiks atvērts, un darbība parasti ir iestatīta, lai izmantotu Notepad.
Ja vēlaties pielīmēt jau esošās iepriekš izveidotās komandu virknes, varat vienkārši nomainīt taustiņu “(Noklusējums)”, lai atbilstu tā taustiņa nosaukumam, kas atbilst tam, ko vēlaties veikt ar dubultklikšķi. To var viegli izdarīt no Regedit, vai arī izmantot mūsu apmācībā gūtās mācības par reģistra izpēti ar PowerShell (plus nelielu PSDrive kniebiens), lai sāktu veidot atkārtoti lietojamu skriptu, kas var konfigurēt jūsu sistēmas. Turpmāk minētās komandas ir jābrauc no paaugstinātas PowerShell sesijas, līdzīgi kā CMD kā administrators.
Pirmkārt, jūs vēlaties konfigurēt PSDrive HKEY_CLASSES_ROOT, jo tas nav iestatīts pēc noklusējuma. Šīs komandas komanda ir:
Jauns-PSDrive HKCR reģistrs HKEY_CLASSES_ROOT
Tagad jūs varat pārvietoties un rediģēt reģistra atslēgas un vērtības HKEY_CLASSES_ROOT tāpat kā jūs regulāri un regulāri HKCU un HKLM PSDrives.
Lai konfigurētu dubultklikšķi, lai palaistu PowerShell skriptus tieši:
Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell '(noklusējums)' 0
Lai konfigurētu dubultklikšķi, lai atvērtu PowerShell skriptus programmā PowerShell ISE:
Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell (noklusējums) "Rediģēt"
Lai atjaunotu noklusējuma vērtību (iestatiet dubultklikšķi, lai atvērtu PowerShell skriptus Notepad):
Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell (noklusējums) "Atvērt"
Tas ir tikai pamata noklusējuma dubultklikšķes darbības mainīšanas pamati. Mēs sīkāk apskatīsim, kā pielāgot, kā PowerShell skripti tiek apstrādāti, kad tie tiek atvērti programmā PowerShell no Explorer nākamajā sadaļā. Ņemiet vērā, ka darbības jomas noteikšana neļauj PSDrives turpināt darbu sesijās. Tātad, iespējams, vēlēsities iekļaut jaunu PSDrive līniju jebkura konfigurācijas skripta sākumā, kuru veidojat šim nolūkam, vai pievienojiet to savam PowerShell profilam. Pretējā gadījumā, pirms mēģināt veikt izmaiņas šādā veidā, jums vajadzēs manuāli palaist to.
PowerShell ExecutionPolicy iestatījuma maiņa.
PowerShell's ExecutionPolicy ir vēl viens aizsardzības līmenis pret ļaunprātīgu skriptu izpildi. Tam ir vairākas iespējas, un pāris dažādos veidos to var iestatīt. No visvairāk līdz vismazāk aizsargātajām iespējām ir pieejamas šādas iespējas:
- Ierobežots - nedrīkst palaist skriptus. (Lielākā daļa sistēmu noklusējuma iestatījums.) Tas pat novērsīs jūsu profila skripta darbību.
- AllSigned - visiem skriptiem ir jābūt digitāli parakstītiem uzticamam izdevējam, lai tie darbotos bez uzaicinājuma lietotājam. Skripti, ko parakstījuši izdevēji, kas skaidri definēti kā neuzticami, vai skripti, kas vispār nav parakstīti, netiks rādītas. PowerShell pieprasīs lietotājam apstiprinājumu, ja skriptu paraksta izdevējs, kas vēl nav definēts kā uzticams vai neuzticams. Ja neesat digitāli parakstījis savu profila skriptu un konstatējis uzticību šim parakstam, tas nevarēs darboties. Esiet uzmanīgi, kādus izdevējus uzticat, jo jūs joprojām varat darboties ar ļaunprātīgiem skriptiem, ja uzticaties nepareizam.
- RemoteSigned - skriptiem, kas lejupielādēti no interneta, tas ir tāds pats kā “AllSigned”. Tomēr lokāli izveidoti vai no citiem avotiem, izņemot internetu, izveidoti skripti drīkst darboties bez apstiprinājuma pieprasījuma. Šeit jums būs arī jābūt uzmanīgiem, kurus ciparparakstus uzticaties, bet pat piesardzīgāk par neparakstītajiem skriptiem, kurus izvēlaties palaist. Šis ir augstākais drošības līmenis, saskaņā ar kuru jums var būt darba profila skripts bez nepieciešamības to digitāli parakstīt.
- Neierobežots - visiem skriptiem ir atļauts darboties, bet skriptiem no interneta būs nepieciešama apstiprinājuma uzvedne. No šī brīža jums ir pilnībā jāizvairās no neuzticamu skriptu palaišanas.
- Apvedceļš - viss notiek bez brīdinājuma. Esiet uzmanīgi ar šo.
- Nav definēts - pašreizējā darbības jomā nav definēta neviena politika. Tas tiek izmantots, lai ļautu atgriezties pie politikām, kas definētas zemākos diapazonos (sīkāka informācija zemāk) vai OS noklusējuma iestatījumiem.
Kā ierosināts Nenoteiktā aprakstā, iepriekš minētās politikas var iestatīt vienā vai vairākos darbības virzienos. Jūs varat izmantot Get-ExecutionPolicy, ar parametru -List, lai redzētu visus darbības jomas un to pašreizējo konfigurāciju.
Darbības jomas ir uzskaitītas prioritārā secībā, un vislielākā definētā joma ir svarīgāka par visiem citiem. Ja nav definēta neviena politika, sistēma atgriežas noklusējuma iestatījumā (vairumā gadījumu tas ir ierobežots).
- MachinePolicy ir grupas politika, kas ir spēkā datora līmenī. To parasti izmanto tikai domēnā, bet to var izdarīt arī lokāli.
- UserPolicy ir grupas politika, kas ir spēkā lietotājam. To parasti izmanto tikai uzņēmuma vidē.
- Process ir darbības joma, kas raksturīga šim PowerShell gadījumam. Politikas izmaiņas šajā jomā neietekmēs citus darbojošos PowerShell procesus, un pēc šīs sesijas pārtraukšanas tie būs neefektīvi. To var konfigurēt ar parametru -ExecutionPolicy, kad tiek palaists PowerShell, vai to var iestatīt ar pareizu Set-ExecutionPolicy sintaksi sesijas laikā.
- CurrentUser ir lokālā reģistrā konfigurēta darbības joma, kas attiecas uz lietotāja kontu, ko izmanto, lai palaistu PowerShell. Šo darbības jomu var mainīt, izmantojot Set-ExecutionPolicy.
- LocalMachine ir lokālā reģistrā konfigurēta darbības joma, kas attiecas uz visiem sistēmas lietotājiem. Šī ir noklusējuma darbības joma, kas tiek mainīta, ja Set-ExecutionPolicy tiek palaists bez parametra -Scope. Tā kā tas attiecas uz visiem sistēmas lietotājiem, to var mainīt tikai no paaugstinātas sesijas.
Tā kā šis raksts galvenokārt attiecas uz drošību, lai atvieglotu lietojamību, mēs esam tikai norūpējušies par zemākiem trim darbības virzieniem. MachinePolicy un UserPolicy iestatījumi ir patiešām noderīgi tikai tad, ja vēlaties īstenot ierobežojošu politiku, kas nav tik vienkārši apieta. Saglabājot mūsu izmaiņas procesa līmenī vai zemāk, mēs jebkurā laikā varam viegli izmantot jebkurus politikas iestatījumus, kurus mēs uzskatām par piemērotiem konkrētai situācijai.
Lai saglabātu līdzsvaru starp drošību un lietojamību, ekrānā redzamā politika, iespējams, ir labākā. Iestatot LocalMachine politiku uz Restricted, parasti tiek liegta skriptu darbināšana, izņemot citus. Protams, to var apiet lietotāji, kuri zina, ko viņi dara bez lielām pūlēm. Bet tai vajadzētu paturēt jebkurus ne-tehniskus lietotājus no nejaušas PowerShell izraisītās katastrofālas iedarbības. Izmantojot pašreizējo lietotāju (t.i., jūs), kas iestatīts kā neierobežots, jūs varat manuāli izpildīt skriptus no komandrindas, tomēr vēlaties, lai saglabātu atgādinājumu par piesardzību skriptiem, kas lejupielādēti no interneta. RemoteSigned iestatījums procesa līmenī būtu jāveic īsceļā uz PowerShell.exe vai (kā mēs to darīsim tālāk) reģistra vērtībās, kas kontrolē PowerShell skriptu darbību. Tas nodrošinās vienkāršu dubultklikšķi-to-palaist funkcionalitāti jebkuram rakstītajam skriptam, vienlaikus izveidojot spēcīgāku barjeru pret nejaušu (potenciāli ļaunprātīgu) skriptu izpildi no ārējiem avotiem. Mēs vēlamies to darīt šeit, jo ir daudz vieglāk nejauši dubultklikšķināt uz skripta, nekā parasti tas ir, lai to manuāli izsauktu no interaktīvās sesijas.
Lai iestatītu pašreizējo lietotāju un lokālo mašīnu politiku, kā tas ir iepriekš redzamajā ekrānā, palaidiet tālāk norādītās komandas no paaugstinātas PowerShell sesijas:
Set-ExecutionPolicy Restricted Set-ExecutionPolicy Unrestricted -Scope CurrentUser
Lai īstenotu RemoteSigned politiku uz skriptiem, kas palaista no Explorer, mums būs jāmaina vērtība kādā no reģistra atslēgām, kuras mēs skatījām agrāk. Tas ir īpaši svarīgi, jo atkarībā no jūsu PowerShell vai Windows versijas noklusējuma konfigurācija var būt apiet visus ExecutionPolicy iestatījumus, izņemot AllSigned. Lai redzētu, kāda ir jūsu datora pašreizējā konfigurācija, varat palaist šo komandu (pārliecinoties, ka pirmais ir HKCR PSDrive):
Get-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell Command Atlasīt objektu (noklusējums)
Jūsu noklusējuma konfigurācija, iespējams, būs viena no šādām divām virknēm vai kaut kas līdzīgs:
(Redzams Windows 7 SP1 x64, ar PowerShell 2.0)
"C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-fails" "% 1"
(Skats uz Windows 8.1 x64, ar PowerShell 4.0)
"C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-Command" "ja ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Skopa procesa apvedceļš un &%% ""
Pirmais nav pārāk slikts, jo viss, kas tas notiek, izpilda skriptu, izmantojot esošos ExecutionPolicy iestatījumus. To varētu padarīt labāku, ieviešot stingrākus ierobežojumus vairāk negadījumiem pakļautām darbībām, taču tas sākotnēji netika paredzēts, lai to aktivizētu, veicot dubultklikšķi, un pēc noklusējuma politika parasti ir ierobežota. Otrais variants tomēr ir pilnīgs apvedceļš, neatkarīgi no tā, kādam nolūkam ir iespējama izpilde - pat ierobežots. Tā kā apvedceļš tiks izmantots procesa darbības jomā, tas ietekmēs tikai tās sesijas, kas sākas, kad skripti tiek darbināti no Explorer. Tomēr tas nozīmē, ka jūs varētu sākt skriptus, kurus citādi varētu sagaidīt (un vēlaties), lai aizliegtu.
Lai iestatītu procesu līmeņa izpildiPolicy skriptiem, kas uzsākti no Explorer, saskaņā ar iepriekšējo ekrānuzņēmumu, jums būs jāmaina tāda pati reģistra vērtība, kādu mēs tikko pieprasījām. To var izdarīt manuāli, izmantojot Regedit, mainot to uz šo:
"C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-ExecutionPolicy" "RemoteSigned" "-file" "% 1"
Varat arī mainīt iestatījumu no PowerShell, ja vēlaties. Neaizmirstiet to izdarīt no paaugstinātas sesijas, kad ir kartēta HKCR PSDrive.
Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Korpusa komanda '(Noklusējums) "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-ExecutionPolicy" "RemoteSigned" "-file" " % 1 ""
Palaidiet PowerShell skriptus kā administratoru.
Tāpat kā ir slikta ideja, lai pilnībā atspējotu UAC, ir arī slikta drošības prakse, lai palaistu skriptus vai programmas ar paaugstinātām privilēģijām, izņemot gadījumus, kad jums tas tiešām ir nepieciešams, lai veiktu darbības, kurām nepieciešama administratora piekļuve. Tātad, nav ieteicams veidot UAC uzvedni PowerShell skriptu noklusējuma darbībā. Tomēr mēs varam pievienot jaunu konteksta izvēlnes opciju, lai ļautu mums viegli palaist skriptus paaugstinātās sesijās, kad mums ir nepieciešams. Tas ir līdzīgs metodei, ko izmanto, lai visu failu konteksta izvēlnē pievienotu “Open with Notepad”, bet šeit mēs tikai mērķēsim PowerShell skriptus. Mēs arī pārņemsim dažus iepriekšējā rakstā izmantotos paņēmienus, kur mēs izmantojām sērijas failu, nevis reģistra hacks, lai palaistu mūsu PowerShell skriptu.
Lai to izdarītu Regedit, atveriet Shell taustiņu:
HKEY_CLASSES_ROOT Microsoft.PowerShellScript.1
Tur izveidojiet jaunu apakšatslēgu. To sauc par “Run ar PowerShell (administrators)”. Zemāk, izveidojiet vēl vienu apakšatslēgu, ko sauc par “Komandu”. Pēc tam iestatiet “(noklusējuma)” vērtību saskaņā ar komandu Command:
"C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-" "" "& Start-Process PowerShell.exe -ArgumentList" -izpildePolicy RemoteSigned -Faila "% 1" "
Lai to izdarītu arī PowerShell, šoreiz būs vajadzīgas trīs līnijas. Viens katram jaunajam taustiņam un viens, lai iestatītu komandas “(noklusējuma)” vērtību. Neaizmirstiet pacēlumu un HKCR kartēšanu.
Jauns postenis "HKCR: Microsoft.PowerShellScript.1 Korpuss ar PowerShell (administrators)" jauns postenis "HKCR: Microsoft.PowerShellScript.1 Korpuss ar PowerShell (administrators) komandu" Set-ItemProperty " HKCR: Microsoft.PowerShellScript.1 Korpuss ar PowerShell (administrators) komandu "(noklusējuma)" "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "Komanda" "" & Start-Process PowerShell.exe -ArgumentList "-ExecutionPolicy RemoteSigned -Fails"% 1 "" - Verb RunAs ""
Tāpat uzmanīgi pievērsiet uzmanību atšķirībām starp virkni, kas tiek ievietota, izmantojot PowerShell, un faktisko vērtību, kas tiek reģistrēta reģistrā. Īpaši, mums ir jāsagatavo visa lieta atsevišķās pēdiņās un jāpārveido iekšējās atsevišķās cenas, lai izvairītos no kļūdām komandu analīzē.
Tagad jums vajadzētu būt jaunam konteksta izvēlnes ierakstam PowerShell skriptiem, ko sauc par “Run with PowerShell (Admin)”.
Jaunā opcija radīs divus secīgus PowerShell gadījumus. Pirmais ir tikai otrā palaišanas ierīce, kas izmanto Start-Process ar “-Verb RunAs” parametru, lai pieprasītu paaugstinājumu jaunajai sesijai. No turienes jūsu skriptam jāspēj darboties ar administratora privilēģijām pēc tam, kad noklikšķināsiet uz UAC.
Apdares pieskārieni.
Tam ir tikai pāris, kas var palīdzēt padarīt dzīvi mazliet vieglāku. Viens - kā pilnībā atbrīvoties no Notepad funkcijas? Vienkārši nokopējiet “(noklusējuma)” vērtību no komandas taustiņa zem Rediģēt (tālāk), tajā pašā vietā sadaļā Atvērt.
"C: Windows System32 WindowsPowerShell v1.0 powerhell_ise.exe" "% 1"
Vai arī varat izmantot šo PowerShell bitu (protams, izmantojot Admin & HKCR):
Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Shell Open Command (noklusējums) "C: Windows System32 WindowsPowerShell v1.0 powerhell_ise.exe" "% 1" '
Vēl viena neliela kairinājums ir konsoles ieradums izzust, kad skripts ir pabeigts. Kad tas notiek, mums nav nekādu iespēju pārskatīt skriptu izlaidi kļūdām vai citai noderīgai informācijai. To var rūpēties, liekot pauzi katra skripta beigās, protams. Alternatīvi, mēs varam mainīt “(noklusējuma)” vērtības mūsu komandu taustiņiem, lai iekļautu parametru “-NoExit”. Zemāk ir modificētās vērtības.
(Bez administratora piekļuves)
"C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-NoExit" "-ExecutionPolicy" "RemoteSigned" "-file" "% 1"
(Ar administratora piekļuvi)
"C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-" "" "& Start-Process PowerShell.exe -ArgumentList '-NoExit-IzpildePolicy RemoteSigned -File \ t Verb RunAs "
Un, protams, mēs jums sniegsim arī PowerShell komandas. Pēdējais atgādinājums: Elevation & HKCR!
(Nav administratora)
Set-ItemProperty HKCR: Microsoft.PowerShellScript.1 Korpusa komanda (noklusējuma) "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-NoExit" "-ExecutionPolicy" "RemoteSigned" " -fails ""% 1 "
(Admin)
Set-ItemProperty 'HKCR: Microsoft.PowerShellScript.1 Korpuss ar PowerShell (administrators) komandu "(noklusējuma)" "C: Windows System32 WindowsPowerShell v1.0 powerhell.exe" "-Command" "" & Start-Process PowerShell.exe -ArgumentList "-NeExit -ExecutionPolicy RemoteSigned -Fails"% 1 "" - Verb RunAs ""
Ņemot to par spin.
Lai to pārbaudītu, mēs izmantosim skriptu, kurā varēsim parādīt iestatījumus ExecutionPolicy un vai skripts ir palaists ar administratora atļaujām. Skripts tiks saukts par “MyScript.ps1” un saglabāts “D: Skriptu laboratorijā” mūsu izlases sistēmā. Kods ir zemāks, lai saņemtu atsauci.
ja (([Security.Principal.WindowsPrincipal] [Drošība.Principal.WindowsIdentity] :: GetCurrent ()) IsInRole ([Security.Principal.WindowsBuiltInRole] "Administrators")) Rakstīt-Output "Running kā administrators! Rakstīt-izeja “Running Limited! Get-ExecutionPolicy -List
Darbības “Run with PowerShell” izmantošana:
Izmantojot darbību “Palaist ar PowerShell (Admin)”, pēc noklikšķināšanas uz UAC:
Lai demonstrētu izpildes procesu darbības procesā, mēs varam likt Windows domāt, ka šis fails nāk no interneta ar šo PowerShell koda bitu:
Add-Content -Path D: Skriptu laboratorija MyScript.ps1 '-Value "[ZoneTransfer]' nZoneId = 3" -Stream "Zone.Identifier"
Par laimi, mums bija -NeExit iespējots. Pretējā gadījumā šī kļūda būtu tikko mirgo, un mēs nebūtu zināmi!
Zone.Identifier var noņemt ar šo:
Clear-Content -Path D: Skriptu laboratorija MyScript.ps1 '-Stream' Zone.Identifier '
Noderīgas atsauces:
- PowerShell skriptu palaišana no partijas faila - Daniel Schroeder Programmēšanas emuārs
- Administratora atļauju pārbaude PowerShell - Hey, Scripting Guy! Blogs