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í:
- 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.
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:
- 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:
- přejděte do nabídky Start, vyhledejte PowerShell ISE a otevřete ji.
2. Klikněte na Soubor → Otevřít a najděte svůj skript.
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.
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