pokud jste novým skriptovacím jazykem PowerShell a chcete se naučit, jak spustit skript PowerShell, jste na správném blogu. Tento blog bude výukový program pokrývající běžné způsoby spouštění skriptů a několik problémů,které se mohou objevit.

obsah

předpoklady

tento článek vám poskytne návod, jak spustit PowerShell v místním počítači. Pokud byste chtěli následovat, před zahájením tohoto článku se ujistěte, že máte zavedeny následující předpoklady.

  • počítač se systémem Windows 10 s oprávněními správce.
  • Windows PowerShell verze 5 nebo vyšší. Můžete také použít PowerShell v7. Tento tutoriál se zaměří na Windows PowerShell, protože operační systém Windows jej již má.
  • libovolný editor textových souborů

řešení zásad provádění

pokud se poprvé pokoušíte spustit skript Windows PowerShell, můžete narazit na běžný problém. PowerShell pravděpodobně vrátí chybovou zprávu o tom, že skript „nelze načíst, protože spuštěné skripty jsou v tomto systému zakázány“.

PS> .\GetServices.ps1 File C:\Temp\GetServices.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 .\GetServices.ps1 ~~~~~ CategoryInfo : SecurityError: (:) , PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess 

PowerShell vrátí chybovou zprávu výše, když se pokusíte spustit PowerShell s pravidly provádění nastavenými na omezené, vzdálené podepsané nebo všechny podepsané.

omezené

omezené je výchozí nastavení zásad pro klientské počítače Windows. Pokud používáte PowerShell poprvé, vaše výchozí zásady by pravděpodobně byly nastaveny tak, aby omezovaly všechny skripty.

stále můžete provádět jednotlivé příkazy v terminálu, ale ne v souboru skriptu. Omezení zahrnuje libovolný soubor končící .ps1xml, .psm1 nebo .ps1.

neomezený

neomezený umožňuje spustit libovolný skript, varuje vás však před spuštěním, pokud je skript stažen z internetu. Tato zásada je obvykle výchozí pro všechna zařízení mimo windows.

Remote Signed

Remote Signed policy umožňuje spustit libovolný skript, který je buď (a) digitálně podepsán nebo (b) jakýkoli skript napsaný na místním počítači s podpisem nebo bez něj.

pokud je skript stažen z internetu a není podepsán, budete muset soubor odblokovat. Můžete tak učinit kliknutím pravým tlačítkem myši na soubor a výběrem vlastností. Nebo můžete použít rutinu PowerShell Unblock-File pro daný soubor skriptu.

použití vzdálené podepsané politiky by bylo ideální volbou při spuštění skriptu staženého z internetu.

všechny podepsané

všechny podepsané vyžadují, aby všechny skripty byly digitálně podepsány důvěryhodným vydavatelem. To zahrnuje skripty stažené z internetu a napsané místně v počítači.

změna zásad provádění PowerShell

Chcete-li změnit zásady provádění:

  1. otevřete Windows PowerShell pomocí Spustit jako správce, abyste se ujistili, že máte nejvyšší oprávnění k provádění změn zásad.
hledat PowerShell v nabídce Start
hledat PowerShell v nabídce Start

2. Po otevření Spusťte následující příkaz PowerShell a nastavte zásady provádění počítače. Politika provádění, jak je uvedeno výše, může být jedním ze tří různých typů. Tento tutoriál používá užitečnou, ale stále bezpečnou politiku provádění RemoteSigned.

protože tento tutoriál předpokládá, že jste si stáhli z Internetu soubor skriptu GetServices.ps1, nastavte zásady provádění na RemoteSigned.

PS> Set-ExecutionPolicy RemoteSigned

zásady provádění aplikace RemoteSigned vás nutí Kryptograficky podepsat každý skript PowerShell stažený z Internetu, než jej PowerShell spustí ve vašem systému.

3. Měli byste vidět výstup požadující potvrzení akce. Zadejte Y a stiskněte klávesu enter pro potvrzení změny zásad.

Execution Policy Change The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at https:/go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy? Yes Yes to All No No to All Suspend Help (default is "N"): 

v tomto okamžiku postupujte podle následujících kroků a prozkoumejte různé metody spuštění skriptu PowerShell v počítači.

jak spustit skript PowerShell

Chcete-li prokázat spuštění skriptu PowerShell, potřebujete ke spuštění soubor skriptu! Pokud nemáte po ruce, stáhněte si tento soubor ZIP a extrahujte soubor PS1 uvnitř. Najdete jednoduchý soubor skriptu uvnitř s názvem GetServices. ps1.

Write-Output "Listing Computer Services"Get-Service

každý skript PowerShell by měl končit příponou .ps1.

pomocí konzoly

jakmile máte připravený skript, existuje několik různých způsobů, jak můžete spustit soubor skriptu PowerShell. Jedním z nejběžnějších způsobů je konzola PowerShell.

Chcete-li tak učinit:

  1. otevřete konzolu PowerShell, jak je uvedeno výše.

2. Přejděte do umístění systému souborů skript je umístěn pomocí Set-Location rutina PowerShell nebo aliasu cd. Skript tohoto tutoriálu se nachází v C:\Temp adresář.

PS> cd C:\Temp\

3. Spusťte skript pomocí notace tečka (.). PowerShell je shell, který také hledá názvy příkazů. Chcete-li rozlišovat mezi příkazem PowerShell a skriptem, musíte předmluvu skriptu tečkou. Tato tečka představuje aktuální adresář.

 PS> .\GetServices.ps1

jak spustit skript PowerShell z příkazového řádku přes umístění PowerShell

pokud nemůžete nebo nechcete spouštět skripty přes konzolu PowerShell, můžete tak učinit také pomocí příkazového řádku good ol‘ (příkazový řádek).

Chcete-li spouštět skripty pomocí příkazového řádku, musíte nejprve spustit spustitelný soubor PowerShell (powershell.exe), s umístěním PowerShell C:\Program Files\WindowsPowerShell\powershell.exe a poté předejte cestu skriptu jako parametr.

můžete spouštět skripty s parametry v libovolném kontextu pouhým zadáním při spuštění spustitelného souboru PowerShell jako powershell.exe -Parameter 'Foo' -Parameter2 'Bar'.

jakmile otevřete cmd.exe, můžete spustit skript PowerShell jako níže. Tento příklad spouští motor a předává mu cestu skriptu C:\Temp\GetServices.ps1.

níže si všimněte, že níže uvedený příklad používá ke spuštění skriptu cestu umístění PowerShell. Budete to muset udělat, pokud složka někde není v cestě.

CMD> C:\Program Files\WindowsPowerShell\powershell.exe "C:\Temp\GetServices.ps1"

umístění PowerShell pro PowerShell 7 používá jiný spustitelný soubor s názvem pwsh.exe se obvykle nachází v C:\Program soubory \ PowerShell\7 \ pwsh.exe.

níže je užitečné video YouTube, které pokrývá provádění skriptu pomocí dávkového souboru, který cmd.exe spustí.

použití PowerShell ISE

pokud si vytvoříte vlastní skripty nebo upravíte ostatní, pravděpodobně budete používat editor skriptů, jako je PowerShell ISE nebo možná Visual Studio (VS) kód. Vzhledem k tomu, že ISE přichází s Windows, Zaměřme se na tuto metodu pro tento tutoriál.

vyvolání skriptu pomocí ISE:

  1. přejděte do nabídky Start, vyhledejte PowerShell ISE a otevřete ji.
hledat PowerShell ISE v nabídce Start
hledat PowerShell ISE v nabídce Start

2. Klikněte na Soubor → Otevřít a najděte svůj skript.

otevřít skript pomocí nabídky Soubor
otevřít skript pomocí nabídky Soubor

3. Po otevření skriptu spusťte skript kliknutím na zelené tlačítko Spustit. Toto tlačítko vyvolá skript ve vestavěném terminálu PowerShell dole.

spustit skript pomocí PowerShell ISE
spustit skript pomocí PowerShell ISE

výstup ukázkového skriptu

skript PowerShell může někdy vrátit výstup. K tomu dochází, když je skript, který provádíte, vytvořen tak, aby vracel objekty, které jsou základní součástí PowerShell.

pokud spustíte ukázkový skript GetServices. ps1, uvidíte následující. Tento skript spustí rutinu Get-Service, která vrací všechny služby nainstalované v místním počítači se systémem Windows.

PS> .\GetScripts.ps1Listing Computer ServicesStatus Name DisplayName------ ---- -----------Running aakore Acronis Agent Core ServiceStopped AarSvc_1b668d Agent Activation Runtime_1b668dRunning AcronisActivePr... Acronis Active Protection ServiceRunning AcronisCyberPro... Acronis Cyber Protection ServiceRunning AcrSch2Svc Acronis Scheduler2 ServiceRunning AdobeARMservice Adobe Acrobat Update ServiceRunning AdobeUpdateService AdobeUpdateServiceRunning AGMService Adobe Genuine Monitor ServiceRunning AGSService Adobe Genuine Software Integrity Se...----Truncated----

spuštění skriptu PowerShell ze skriptu

Řekněme, že máte dva skripty a chcete, aby jeden zavolal druhému. Možná máte skript s názvem GetUser.ps1 a jeden s názvem ResetPassword. ps1. uvnitř skriptu GetUser. ps1 byste chtěli spustit ResetPassword. ps1 pro resetování uživatelského hesla.

uvnitř volacího skriptu (GetUser.ps1) byste přidali řádek pro spuštění druhého skriptu, stejně jako byste volali skript z příkazového řádku.

níže vidíte, že máte několik možností. Obvykle byste se měli rozhodnout spustit jiný skript ve stejné relaci nebo rozsahu, abyste zjednodušili věci, pokud nemáte konkrétní důvod spustit skript v jiné relaci PowerShell.

## To run the other script in a new sessionpowershell.exe .\ResetPassword.ps1## To run the other script in the same session.\ResetPassword.ps1

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.