Domovská » jak » Jak nakonfigurovat systém Windows pro práci s skriptem PowerShell snadněji

    Jak nakonfigurovat systém Windows pro práci s skriptem PowerShell snadněji

    Windows a PowerShell mají vestavěné funkce zabezpečení a výchozí konfigurace určené k zabránění koncovým uživatelům při náhodném spuštění skriptů v průběhu jejich každodenních činností. Pokud však vaše každodenní činnosti obvykle zahrnují psaní a spouštění vlastních skriptů PowerShell, může to být více nepříjemné než přínos. Zde vám ukážeme, jak tyto funkce vyřešit bez úplného ohrožení bezpečnosti.

    Jak a proč Windows & PowerShell brání spuštění skriptu.

    PowerShell je efektivní příkazový shell a skriptovací jazyk, který je určen k nahrazení CMD a dávkových skriptů na systémech Windows. Jako takový skript PowerShell může být do značné míry konfigurován tak, že provede vše, co byste mohli provést ručně z příkazového řádku. To se rovná prakticky možné změně ve vašem systému, až do omezení, které jsou na vašem uživatelském účtu. Pokud byste tedy mohli dvakrát kliknout na skript PowerShell a spustit jej s úplnými oprávněními administrátora, jednoduchá takováto linka by opravdu mohla zničit váš den:

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

    NEPOUŽÍVEJTE výše uvedený příkaz!

    To jednoduše prochází souborovým systémem a smaže cokoli. Je zajímavé, že systém nemusí být nefunkční tak rychle, jak si myslíte - i když běží z zvýšené relace. Ale pokud vás někdo zavolá po spuštění tohoto skriptu, protože najednou nemůže nalézt své soubory nebo spustit některé programy, "vypnutí a zapnutí" bude pravděpodobně prostě vést je do Windows Startup Repair, kde budou informováni, že tam je nic, co lze řešit problémem. Co by mohlo být horší, místo toho, aby se dostal skript, který právě roztříští jejich souborový systém, může být váš přítel podveden do běhu, který stahuje a nainstaluje keylogger nebo službu vzdáleného přístupu. Poté, než se vás zeptáte na otázky týkající se opravy po spuštění, mohou se konečně zeptat policii ohledně některých otázek týkajících se bankovních podvodů!

    Nyní by mělo být zřejmé, proč je třeba některé věci chránit konečné uživatele před sebou, abych tak řekl. Ovšem uživatelé moci, správci systému a další geekové jsou obecně (i když existují výjimky) trochu obezřetnější z těchto hrozeb, vědí, jak si je mohou všimnout a snadno se jim vyhnout, a jen chtějí začít pracovat. Chcete-li to provést, budou muset zakázat nebo obejít některé bloky silnic:

    • PowerShell ve výchozím nastavení nepovoluje provedení externího skriptu.
      Nastavení ExecutionPolicy v PowerShell zabraňuje ve všech verzích systému Windows ve výchozím nastavení provádět externí skripty. V některých verzích systému Windows výchozí v žádném případě neumožňuje provedení skriptu. Ukázali jsme vás, jak změnit toto nastavení v tématu Jak povolit spuštění skriptů PowerShell v systému Windows 7, ale pokryjeme to i na několika úrovních.
    • PowerShell není ve výchozím nastavení přidružen k příponu souboru .PS1.
      Přinesli jsme to zpočátku v naší seriálu PowerShell Geek School. Systém Windows nastaví výchozí akci pro soubory PS1 a otevře je v programu Poznámkový blok namísto jejich odeslání do interpretačního příkazu PowerShell. Toto je přímo zabránit náhodnému spuštění škodlivých skriptů, když jsou jednoduše poklepáni.
    • Některé skripty PowerShell nebudou pracovat bez oprávnění správce.
      I když běžíte s účtem na úrovni Administrator, stále musíte procházet Řízením uživatelských účtů (UAC), abyste mohli provádět určité akce. U nástrojů příkazového řádku to může být trochu těžkopádné. Nechceme zakázat UAC, ale je to pěkné, když se nám to daří trochu jednodušší.

    Stejné problémy se objevují v části Jak používat dávkový soubor pro snadnější spuštění skriptů PowerShell, kde vás procházíme psaním dávkového souboru, který je dočasně obejde. Nyní vám ukážeme, jak nastavit systém s dlouhodobějším řešením. Mějte na paměti, že tyto změny byste obecně neměli provádět na systémech, které nejsou výlučně používány - jinak uvedete další uživatele do vyššího rizika, že budou mít stejné problémy, které mají tyto funkce zabránit.

    Změna přidružení souboru .PS1.

    První, a možná nejdůležitější, nepríjemnost obejít je výchozí přidružení pro soubory PS1. Přidružení těchto souborů do jiného než PowerShell.exe má smysl pro zabránění náhodnému provedení nežádoucích skriptů. Vzhledem k tomu, že PowerShell je dodáván s integrovaným skriptovacím prostředím (ISE), který je speciálně navržen pro editaci skriptů PowerShell, proč bychom chtěli ve výchozím nastavení otevřít soubory PS1 v programu Poznámkový blok? Dokonce i když nejste připraveni plně přepnout na funkci double-to-run, pravděpodobně budete chtít tyto nastavení vyladit.

    Můžete změnit přidružení souboru .PS1 k libovolnému požadovanému programu pomocí ovládacího panelu Výchozí programy, ale kopání přímo do registru vám poskytne trochu větší kontrolu nad tím, jak budou soubory otevřeny. Také můžete nastavit nebo měnit další volby, které jsou k dispozici v kontextové nabídce souborů .PS1. Nezapomeňte provést zálohu registru před tím, než to provedete!

    Nastavení registru kontrolující otevření skriptů PowerShell jsou uložena v následujícím umístění:

    HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell

    Chcete-li prozkoumat tato nastavení dříve, než je změníme, podívejte se na tento klíč a jeho podklíč s nástrojem Regedit. Klíč Shell by měl mít pouze jednu hodnotu, "(výchozí)", která je nastavena na "Open". Jedná se o ukazatel na výchozí akci pro dvojité kliknutí na soubor, který uvidíme v podklíčích.

    Rozbalte klíč Shell a uvidíte tři podklíče. Každá z nich představuje akci, kterou můžete provést, což je specifické pro skripty PowerShell.

    Každá klávesa můžete rozbalit a prozkoumat hodnoty v rámci, ale v zásadě se rovnají následujícím hodnotám:

    • 0 - Spustit s PowerShell. "Spustit s PowerShell" je ve skutečnosti název volby již v kontextové nabídce skriptů PowerShell. Text je právě stažen z jiného umístění namísto použití názvu klíče, jako ostatní. A stále to není výchozí akce s dvojitým kliknutím.
    • Upravit - Otevřít v PowerShell ISE. To má mnohem více smyslu než program Poznámkový blok, ale stále musíte kliknout pravým tlačítkem myši na soubor .PS1, aby to bylo ve výchozím nastavení.
    • Otevřít - Otevřít v Poznámkovém bloku. Všimněte si, že tento název klíče je také řetězec uložený v hodnotě "(výchozí)" tlačítka Shell. To znamená, že poklepáním na soubor bude "Otevřít", a tato akce je obvykle nastavena pro použití Poznámkový blok.

    Pokud se chcete držet předem vytvořených příkazových řetězců, které jsou již k dispozici, můžete pouze změnit hodnotu "(výchozí)" v klíči Shell tak, aby odpovídala názvu klíče, který odpovídá tomu, co chcete dvakrát kliknout. To se dá snadno provést z prostředí Regedit, nebo můžete využít zkušenosti získané z našeho tutoriálu o zkoumání registru s PowerShell (plus malý vylepšení PSDrive), abyste mohli začít vytvářet opakovaně použitelný skript, který vám může nakonfigurovat vaše systémy. Níže uvedené příkazy musí být spuštěny ze zvýšené relace PowerShell, podobně jako při spuštění CMD jako správce.

    Za prvé, budete chtít nakonfigurovat PSDrive pro HKEY_CLASSES_ROOT, protože toto není ve výchozím nastavení nastaveno. Příkazem je:

    New-PSDrive registru HKCR HKEY_CLASSES_ROOT

    Nyní můžete procházet a upravovat klíče a hodnoty registru v HKEY_CLASSES_ROOT, stejně jako v normálním HKCU a HKLM PSDrives.

    Chcete-li konfigurovat dvojitým kliknutím, spusťte skripty PowerShell přímo:

    Set-ItemProperty HKCR: \ Microsoft.PowerShellScript.1 \ Shell '(výchozí)' 0

    Chcete-li konfigurovat dvojité klepnutí, otevřete skripty PowerShell v PowerShell ISE:

    Set-Item Vlastnost HKCR: \ Microsoft.PowerShellScript.1 \ Shell '(výchozí) "Upravit"

    Chcete-li obnovit výchozí hodnotu (nastavte dvojité klepnutí a otevřete skripty PowerShell v programu Poznámkový blok):

    HKCR: \ Microsoft.PowerShellScript.1 \ Shell '(výchozí) "Otevřít"

    To je jen základ změn výchozího dvojkliknutí akce. Budeme podrobněji specifikovat, jak se skripty PowerShell zpracovávají při jejich otevření v aplikaci PowerShell z Průzkumníka v další části. Mějte na paměti, že stanovení rozsahu nedovoluje, aby PSDrives přetrvával přes relace. Takže pravděpodobně budete chtít přidat linku New-PSDrive na začátek libovolného konfiguračního skriptu, který jste vytvořili pro tento účel, nebo jej přidat do svého profilu PowerShell. Jinak budete muset daný bit spustit ručně, než se pokusíte provést změny tímto způsobem.

    Změna nastavení PowerShell ExecutionPolicy.

    PowerShell ExecutionPolicy je další vrstva ochrany proti spuštění škodlivých skriptů. Existuje několik možností a několik různých způsobů, jak lze nastavit. Od většiny k nejméně zabezpečeným jsou dostupné možnosti:

    • Omezeno - žádné skripty nesmí běžet. (Výchozí nastavení pro většinu systémů.) To dokonce zabrání spuštění skriptu profilu.
    • AllSigned - Všechny skripty musí být digitálně podepsány důvěryhodným vydavatelem, aby se spustili bez vyzvání uživatele. Skripty podepsané vydavateli, které jsou výslovně definovány jako nedůvěryhodné, nebo skripty, které nebyly vůbec digitálně podepsány, nebudou spuštěny. PowerShell vyzve uživatele k potvrzení, pokud je skript podepsán vydavatelem, který ještě není definován jako důvěryhodný nebo nedůvěryhodný. Pokud jste svůj profilový skript digitálně nepodepsali a nedisponujete důvěrou v tento podpis, nebude možné jej spustit. Buďte opatrní, na které vydavatele máte důvěru, protože stále můžete skončit se spouštěním škodlivých skriptů, pokud důvěřujete tomu, co je špatné.
    • RemoteSigned - Pro skripty stažené z Internetu je to skutečně stejné jako "AllSigned". Skripty vytvořené místně nebo importované z jiných zdrojů než z Internetu však mohou být spuštěny bez výzvy k potvrzení. Zde budete muset být také opatrní, které digitální podpisy jste důvěřují, ale dokonce byste byli opatrnější na nesignované skripty, které se rozhodnete spouštět. Jedná se o nejvyšší úroveň zabezpečení, pod kterou můžete mít pracovní profilový skript, aniž byste ho museli digitálně podepsat.
    • Neomezený - všechny skripty mohou být spuštěny, pro skripty z Internetu však bude vyžadovat potvrzovací výzva. Od tohoto okamžiku je zcela na vás, abyste se vyhnuli nespravitelným skriptům.
    • Bypass - Vše běží bez varování. Buďte opatrní s touto.
    • Nedefinováno - Ve stávajícím oboru není definována žádná politika. Toto se používá k tomu, aby bylo možné spouštět zásady definované v nižších oblastech (podrobnosti níže) nebo na výchozí nastavení operačního systému.

    Jak navrhuje popis Undefined, výše uvedené zásady mohou být nastaveny v jednom nebo více z několika oblastí. Pomocí Get-ExecutionPolicy můžete pomocí parametru -List zobrazit všechny rozsahy a jejich aktuální konfiguraci.

    Rozsahy jsou uvedeny v pořadí priorit, přičemž vrchol definovaný rozsah převyšuje všechny ostatní. Pokud nejsou definovány žádné zásady, systém se vrátí do výchozího nastavení (ve většině případů je to omezeno).

    • MachinePolicy představuje Zásady skupiny platné na úrovni počítače. To se obecně používá pouze v doméně, ale může být provedeno také lokálně.
    • UserPolicy představuje Zásady skupiny platné pro uživatele. Toto je také typicky používáno pouze v podnikových prostředích.
    • Proces je rozsah specifický pro tento případ PowerShell. Změny zásad v tomto oboru nebudou mít vliv na ostatní běžící procesy PowerShell a po ukončení této relace budou neúčinné. To může být konfigurováno parametrem -ExecutionPolicy při spuštění PowerShell nebo lze nastavit správnou syntaxi Set-ExecutionPolicy z relace.
    • CurrentUser je rozsah, který je konfigurován v místním registru a vztahuje se na uživatelský účet použitý k spuštění PowerShell. Tento rozsah lze upravit pomocí funkce Set-ExecutionPolicy.
    • LocalMachine je oblast konfigurovaná v místním registru a vztahuje se na všechny uživatele systému. Toto je výchozí rozsah, který se změní, pokud se spustí Set-ExecutionPolicy bez parametru -Scope. Vzhledem k tomu, že se to týká všech uživatelů systému, může být změněno pouze z zvýšené relace.

    Vzhledem k tomu, že tento článek je zaměřen hlavně na získání zabezpečení, který usnadňuje použitelnost, jsme jen znepokojení nad třemi nižšími oblastmi. Nastavení nástroje MachinePolicy a UserPolicy jsou opravdu užitečné pouze v případě, že chcete uplatnit restriktivní zásady, které nejsou jednoduše vynechány. Uchováním našich změn do úrovně procesů nebo dole, můžeme kdykoli snadno použít jakékoliv nastavení politiky, které pro danou situaci považujeme za vhodné.

    Chcete-li zachovat určitou rovnováhu mezi bezpečností a použitelností, pravidlo zobrazené na obrazovce obrazovky je pravděpodobně nejlepší. Nastavení zásady LocalMachine na Restricted obecně zabraňuje spouštění skriptů nikým jiným než vy. Samozřejmě, že to mohou být vynechány uživateli, kteří vědí, co dělají bez velkého úsilí. Mělo by však zabránit jakýmkoli netechnickým uživatelům náhodou spouštět v PowerShellu něco katastrofického. Používání funkce CurrentUser (tj. Vás) jako Neomezené umožňuje ruční spouštění skriptů z příkazového řádku, jak se vám líbí, ale zachová si připomínku opatrnosti ke skriptům staženým z Internetu. Nastavení vzdáleného přiřazení na úrovni procesů je třeba provést v zástupci PowerShell.exe nebo (jak to učiníme níže) v registrech, které řídí chování skriptů PowerShell. To umožní snadnou funkci dvojitého kliknutí pro spuštění všech skriptů, které píšete, a současně vytváří silnější bariéru proti neúmyslnému spuštění skriptů (potenciálně škodlivých) z externích zdrojů. Chceme to udělat zde, protože je mnohem snazší náhodou dvakrát kliknout na skript, než je obecně volat ručně z interaktivní relace.

    Chcete-li nastavit zásady CurrentUser a LocalMachine jako na výše uvedené obrazovce, spusťte následující příkazy ze zvýšené relace PowerShell:

    Set-ExecutionPolicy Obmedzené Set-ExecutionPolicy Unrestricted -Scope CurrentUser

    Chcete-li vynutit zásadu RemoteSigned na skriptech spustit z Průzkumníka, budeme muset změnit hodnotu uvnitř jednoho z klíče registru jsme se dívali na dříve. To je zvláště důležité, protože v závislosti na verzi PowerShell nebo Windows může být výchozí konfigurace obejit všechny nastavení ExecutionPolicy kromě AllSigned. Chcete-li zjistit, jaká je aktuální konfigurace pro váš počítač, můžete tento příkaz spustit (ujistěte se, že je nejprve namapován soubor HKCR PSDrive):

    Získat položku vlastností HKCR: \ Microsoft.PowerShellScript.1 \ Shell \ Command | Vyberte objekt (výchozí)

    Výchozí konfigurace bude pravděpodobně jeden z následujících dvou řetězců nebo něco podobného:

    (Viděno na Windows 7 SP1 x64, s PowerShell 2.0)

    "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" "-soubor" "% 1"

    (Viděno na systému Windows 8.1 x 64 s PowerShell 4.0)

    "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" "-Command" "pokud ((Get-ExecutionPolicy) -ne 'AllSigned') Set-ExecutionPolicy -Scope Process Bypass '"

    První z nich není příliš špatné, protože vše, co dělá, je spustit skript pod existujícím nastavením položky ExecutionPolicy. Dalo by se to zlepšit tím, že budou vynuceny přísnější omezení pro náchylnější akce, ale původně to nemělo být původně zamýšleno dvojím kliknutím a výchozí politika je obvykle omezena. Druhou možností je však úplný obtok jakékoli implementace ExecutionPolicy, kterou pravděpodobně budete mít na svém místě - dokonce i Restricted. Vzhledem k tomu, že se obtok použije v rozsahu procesů, ovlivní pouze relace, které se spustí při spuštění skriptu z Průzkumníka. To však znamená, že byste mohli ukončit spouštění skriptů, které byste jinak (a chtěli) vaše zásady zakázat.

    Chcete-li nastavit procesní úroveň ExecutionPolicy pro skripty spuštěné z Průzkumníka, v souladu s výše uvedeným screenshotem, budete muset upravit stejnou hodnotu registru, kterou jsme právě dotazovali. Můžete to udělat ručně v nástroji Regedit tím, že změníte na toto:

    "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" "-ExecutionPolicy" "RemoteSigned" "-soubor" "% 1"

    Můžete také změnit nastavení z nabídky PowerShell, pokud chcete. Nezapomeňte to provést z vylepšené relace s mapovaným HKCR PSDrive.

    Set-ItemProperty HKCR: \ Microsoft.PowerShellScript.1 \ Shell \ Command (výchozí) "" C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe "" ExecutingPolicy "" RemoteSigned " % 1 "'

    Spusťte skripty PowerShell jako správce.

    Stejně jako je špatný nápad úplně zakázat UAC, je také špatná bezpečnostní praxe spustit skripty nebo programy se zvýšeným oprávněním, pokud je skutečně nepotřebujete provést operace, které vyžadují přístup administrátora. Takže vytvoření příkazu UAC do výchozí akce pro skripty PowerShell se nedoporučuje. Můžeme však přidat novou volbu kontextové nabídky, která nám umožní snadno spouštět skripty ve zvýšených relacích, když to potřebujeme. Stejně jako metoda použitá k přidání "Otevřít s poznámkovým blokem" do kontextové nabídky všech souborů - ale zde se budeme zaměřovat pouze na skripty PowerShell. Budeme také nést některé techniky používané v předchozím článku, kde jsme použili dávkový soubor namísto registru hacků, abychom spustili náš skript PowerShell.

    Chcete-li to provést v programu Regedit, vraťte se zpět do klíče Shell, na adrese:

    HKEY_CLASSES_ROOT \ Microsoft.PowerShellScript.1 \ Shell

    Vytvořte nový podklíč. Zavolejte "Spustit s PowerShell (Admin)". Pod tím vytvořte další podklíč nazvaný "Příkaz". Potom nastavte hodnotu "(Výchozí)" pod příkazem:

    "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" "-Command" "" & Start-Process PowerShell.exe -ArgumentList '-ExecutionPolicy VzdálenýSignovaný -Soubor \ "% 1 \"'  "

    Totéž v PowerShellu bude tentokrát potřebovat tři řádky. Jeden pro každý nový klíč a jeden pro nastavení hodnoty (výchozí) pro příkaz. Nezapomeňte na výšku a mapování HKCR.

    HKCR: \ Microsoft.PowerShellScript.1 \ Shell \ Run with PowerShell (Admin) 'Nová položka' HKCR: \ Microsoft.PowerShellScript.1 \ Shell \ HKCR: \ Microsoft.PowerShellScript.1 \ Shell \ Run s PowerShell (Admin) \ Command "(výchozí)" "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" Start-Process PowerShell.exe -ArgumentList "-ExecutionPolicy VzdálenýSignovaný -File \"% 1 \ "" - Verb RunAs "'

    Také věnujte velkou pozornost rozdílům mezi řetězcem, který se vkládá prostřednictvím PowerShell, a skutečnou hodnotou, která jde do registru. Zvláště musíme zabalit celou věc v jednoduchých uvozovkách a zdvojnásobit na interních jednočinných údajích, aby se zabránilo chybám při analýze příkazů.

    Nyní byste měli mít novou položku kontextového menu pro skripty PowerShell nazvanou "Spustit s PowerShell (Admin)".

    Nová možnost způsobí dvě po sobě jdoucí instance služby PowerShell. První je pouze spouštěč pro druhou, která používá parametr Start-Process s parametrem "-Verb RunAs", aby vyžádala zvýšení pro novou relaci. Odtud by měl váš skript být schopen spustit oprávnění správce po kliknutí na výzvu UAC.

    Dokončení.

    Existuje jen pár vylepšení, které vám pomohou ulehčit život. Pro jednoho, co se zbavit funkce Notepadu úplně? Jednoduše zkopírujte hodnotu "(Výchozí)" z příkazového tlačítka v části Upravit (dole) do stejného umístění v části Otevřít.

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

    Nebo můžete použít tento bit PowerShell (samozřejmě s Admin & HKCR):

    Set-ItemProperty HKCR: \ Microsoft.PowerShellScript.1 \ Shell \ Open \ Command (výchozí) "" C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell_ise.exe "

    Jedním dalším drobným obtěžováním je zvyk konzoly na mizení, jakmile je skript dokončen. Když k tomu dojde, nemůžeme posoudit výstup skriptu kvůli chybám nebo jiným užitečným informacím. To je možné postarat tím, že na konci každého z vašich skriptů samozřejmě položíte pauzu. Alternativně můžeme modifikovat hodnoty "(Výchozí)" pro naše příkazové klávesy tak, aby obsahovaly parametr "-NoExit". Níže jsou upravené hodnoty.

    (Bez administračního přístupu)

    "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" "-Noexit" "-ExecutionPolicy" "RemoteSigned" "-file"

    (S administrátorem)

    "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" "-Command" "" & Spustit proces PowerShell.exe -ArgumentList '-NoExit -ExecutionPolicy VzdálenýSignovaný -Soubor \ "% 1 \ Verb RunAs "

    A samozřejmě vám dáme také příkazy PowerShell. Poslední připomenutí: Elevation & HKCR!

    (Bez administrátora)

    Set-ItemProperty HKCR: \ Microsoft.PowerShellScript.1 \ Shell \ Command (výchozí) "" C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe "" -NoExit "" -ExecutionPolicy "" RemoteSigned " -soubor ""% 1 "

    (Admin)

    HKCR: \ Microsoft.PowerShellScript.1 \ Shell \ Run s PowerShell (Admin) \ Command "(výchozí)" "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" "" & Spustit proces PowerShell.exe -ArgumentList "-NoExit -ExecutionPolicy VzdálenýSignovaný -Soubor \"% 1 \ "" - Verb RunAs "'

    Přemýšlejte o tom.

    Chcete-li to otestovat, použijeme skript, který nám ukáže nastavení ExecutionPolicy na místě a zda byl skript spuštěn s oprávněním správce. Skript bude nazván "MyScript.ps1" a bude uložen v "D: \ Script Lab" na našem vzorovém systému. Kód je uveden níže.

    pokud (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent ()) IsInRole ([Security.Principal.WindowsBuiltInRole] "Administrator")) Write-Output Running as Administrator! Write-Output 'Running Limited!' Get-ExecutionPolicy-Seznam

    Použití akce "Spustit s PowerShell":

    Pomocí akce "Spustit s PowerShell (Admin)" po kliknutí na UAC:

    Chcete-li provést demonstraci ExecutionPolicy v akci v rámci oboru Process, můžeme systém Windows myslet, že soubor pochází z Internetu pomocí tohoto bitového kódu PowerShell:

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

    Naštěstí jsme měli povoleno -NoExit. V opačném případě by tato chyba právě blikala a my bychom to nevěděli!

    Zone.Identifier lze odstranit tímto:

    Clear-Content-cesta "D: \ Script Lab \ MyScript.ps1 '-Stream' Zone.Identifier '

    Užitečné odkazy:

    • Spouštění skriptů PowerShell z dávkového souboru - Programovací blog Daniel Schroeder
    • Kontrola oprávnění administrátora v PowerShell - Hej, skriptovací kluk! Blog