Microsoft PowerShell byl tradičně považován za produkt pouze pro Windows, ale už ne. Od PowerShellu v6 jsou nyní všechny možnosti PowerShellu dostupné napříč platformami, přičemž Linux je nejoblíbenější.
V tomto tutoriálu se naučíte, jak začít od začátku instalací PowerShell na Ubuntu (ostatní distribuce Linuxu jsou podobné), jak spouštět příkazy a dokonce instalovat některé moduly.
Začněme!
Předpoklady
Tento tutoriál bude obsahovat různé ukázky. Pokud je chcete sledovat, ujistěte se, že máte následující:
- Jakákoli podporovaná distribuce Linuxu – Tento výukový program používá Peppermint 10, který je založen na Ubuntu 18.04 (LTS).
- Účet s přístupem root.
Aktualizace úložiště balíčků
Než přejdete k instalaci PowerShellu v systému Linux, musíte nejprve aktualizovat seznam úložišť správce balíčků apt. Některé distribuce Linuxu používají k instalaci balíčků apt správce balíčků apt; PowerShell je jedním z nich.
Chcete-li zajistit, aby apt při stahování našel balíček PowerShell a všechny závislosti, musíte nejprve aktualizovat seznam úložišť balíčků apt. Chcete-li to provést, spusťte [apt update](
.
sudo apt update
Instalace PowerShellu v systému Linux
Nyní, když jste aktualizovali úložiště balíčků, je čas nainstalovat PowerShell na Linux. Protože tento tutoriál používá distribuci založenou na Ubuntu, máte dva různé způsoby, jak nainstalovat PowerShell; pomocí balíčků snap nebo prostřednictvím sady .NET SDK.
Instalace PowerShellu prostřednictvím Snap Packages
Nejjednodušší způsob, jak nainstalovat PowerShell na Ubuntu, je pomocí snapů. Snaps jsou balíčky, které fungují v několika verzích a distribucích Linuxu.
Chcete-li nainstalovat PowerShell na Linux prostřednictvím balíčku snap, otevřete terminál a spusťte snap install
Příkaz Linux s sudo
práva používat název balíčku snap powershell
.
Ve výchozím nastavení je rozsah balíčků snap omezen z bezpečnostních důvodů. Zadání
--classic
umožňuje provádět změny ve vašem systému mimo bezpečnostní karanténu.
sudo snap install powershell --classic
Instalace PowerShellu prostřednictvím sady .NET SDK
1. Někdy zjistíte, že balíček PowerShell snap neobsahuje nejnovější verzi PowerShellu. Když k tomu dojde, můžete se vždy rozhodnout pro trasu .NET SDK, která bude vždy aktualizována.
PowerShell je zabalen s .NET Core, takže když nainstalujete .NET SDK, získáte také PowerShell!
Stáhněte a nainstalujte nejnovější dostupnou sadu .NET SDK spuštěním níže uvedeného příkazu pomocí apt
správce balíčků. V době psaní tohoto článku je nejnovější dostupný balíček .NET SDK v5.0.8. Nejnovější dostupnou verzi můžete zkontrolovat zde.
sudo apt install dotnet-sdk-5.0
2. Nyní nainstalujte PowerShell pomocí dotnet
aplikace pomocí dotnet tool install
. dotnet tool
příkaz určuje balíček NuGet, jako který je PowerShell zabalen.
Zadáním --global
možnost, dotnet
nainstaluje balíček PowerShell do ~\.dotnet\tools a zajišťuje, že adresář je v systémové PATH, takže jej můžete spustit odkudkoli.
dotnet tool install --global PowerShell
Spouštění základních příkazů PowerShellu v systému Linux
Nyní, když máte PowerShell nainstalovaný v Linuxu, co dál? Začněme spuštěním několika základních příkazů. Chcete-li spustit PowerShell, jednoduše spusťte pwsh
a přejdete do interaktivní konzoly PowerShell.
Jako multiplatformní skriptovací jazyk podporuje PowerShell v systému Linux všechny běžně známé příkazy z příkazového řádku CMD a Linuxu, jako je sudo apt update
. Není třeba otevírat Bash terminál!
Od této chvíle můžete spouštět tisíce vestavěných příkazů PowerShellu. Když už jste u toho, zkontrolujte, jaká verze PowerShellu je nainstalována pomocí $PSVersionTable
. Měli byste vidět, že se PSEdition zobrazuje jako Core a Platforma je Unix .
Po dokončení v konzole PowerShell ukončete spuštěním exit
příkaz. Tento příkaz vás vrátí zpět do vašeho terminálu Bash.
Omezení PowerShellu v systému Linux
To, že můžete nainstalovat PowerShell a spouštět na něm příkazy, nutně neznamená, že můžete ve Windows dělat vše, co je možné. Koneckonců, Linux jako Open Source je úplně jiný operační systém a některé příkazy nebudou dostupné pro funkce, které nejsou v Linuxu dostupné.
Windows -ne Linux
Například protože Linux nemá registr, neuvidíte žádné jednotky PowerShell. Get-PSDrive
cmdlet bude stále k dispozici, ale vrátí pouze připojené svazky úložiště Linux a další standardní disky PS. Níže můžete vidět příklad.
Get-PSDrive | Format-Table -Auto
Na rozdíl od Microsoft Windows nemá Linux ani Common Information Model (CIM) ani Windows Management Instrumentation (WMI). Oba pomáhají při poskytování informací o správě zařízení a aplikací operačnímu systému Windows.
Níže můžete vidět rutinu prostředí Windows PowerShell Get-CimInstance
není k dispozici v prostředí PowerShell v systému Linux.
Get-CimInstance -ClassName Win32_BIOS
Ale pokud se pokusíte použít Get-CimInstance
v prostředí Windows PowerShell níže uvidíte, že funguje podle očekávání.
Žádné naplánované úlohy
Další nevýhodou PowerShellu v Linuxu je nedostatek naplánovaných úloh. Naplánované úlohy jsou praktickou funkcí v prostředí Window PowerShell, která vám umožňuje spouštět úlohy na pozadí prostřednictvím Plánovače úloh systému Windows.
Chcete-li vytvořit naplánovanou úlohu v prostředí Windows PowerShell, musíte se zaregistrovat úlohu prostřednictvím Register-ScheduledJob
cmdlet. Níže uvidíte příklad kopírování některých excelových sešitů, které fungují v prostředí Windows PowerShell. Všimnete si, že Register-ScheduledJob
cmdlet nebyl nalezen.
I když nemůžete naplánovat úlohu, stále můžete vyvolat úlohy na pozadí pomocí Start-Job
příkaz. Start-Job
cmdlet umožňuje spouštět úlohy na pozadí v prostředí PowerShell a provádět úlohu bez interakce s aktuální relací.
Možná byste chtěli vypsat všechny soubory v /var/backups ale udělejte to na pozadí. Můžete vytvořit příkaz, který se má provést v ScriptBlock
a vytvořte úlohu s názvem GetAllBackupFiles
vyvolat pomocí Start-Job
, jak je uvedeno níže.
Start-Job -Name GetAllBackupFiles -ScriptBlock {Get-ChildItem /var/backups -Recurse}
Jakmile se úloha na pozadí spustí, můžete získat výstup z této úlohy pomocí Retrieve-Job
cmdlet zadáním -Name
které jste uvedli při spuštění.
Retrieve-Job -Name GetAllBackupFiles
Práce s moduly PowerShell v systému Linux
Důležitým konceptem v prostředí Windows PowerShell je modul PowerShell. Moduly PowerShell jsou skupiny příkazů vytvořené jako „balíčky“ vytvořené jak od společnosti Microsoft, tak prostřednictvím komunity PowerShell.
Hledání nainstalovaných modulů
Ve výchozím nastavení PowerShell v Linuxu, stejně jako Windows, instaluje různé moduly. Všechny tyto moduly najdete spuštěním Get-Module
příkaz, jak je znázorněno níže. ListAvailable
parametr říká Get-Module
vrátíte vše moduly na souborovém systému; nejen načtené moduly.
Get-Module -ListAvailable
Níže můžete vidět Pester modul je nainstalován v /root/.local/share/powershell/Modules což je uživatelské umístění pro moduly PowerShell. Jak nainstalovat moduly, se dozvíte v nadcházející sekci.
Každé umístění pro instalaci modulů můžete zobrazit v PSModulePath
proměnná prostředí, jak je uvedeno níže. Od hodnoty $env:PSModulePath
je jeden řetězec, výukový program používá split
operátor pro rozdělení řetězce na dvojtečky (nikoli středníky jako Windows), aby se každá cesta zobrazila na jiném řádku.
$env:PSModulePath -split ':'
Instalace modulů PowerShell v systému Linux
Přestože PowerShell v systému Linux přichází s různými moduly již nainstalovanými, je pravděpodobné, že budete potřebovat více funkcí. Když k tomu dojde, můžete využít galerii PowerShell. Galerie PowerShell je úložiště tisíců modulů, které fungují ve Windows i Linuxu.
Pomocí Install-Module
cmdlet, můžete nainstalovat moduly na Linux stejně jako na Windows. Nejprve byste však měli najít modul, který hledáte, pomocí Find-Module
.
Řekněme, že byste chtěli spustit nějaké testy Pesters pomocí populárního testovacího rámce Pester. Pester se dodává zabalený v modulu. Zkontrolujte, zda je modul Pester dostupný v galerii PowerShell pomocí Find-Module
cmdlet.
Find-Module Pester
Níže můžete vidět Find-Module
našel dostupný modul Pester.
Jakmile ověříte, že je modul Pester k dispozici, nainstalujte modul pomocí Install-Module
rutina určující Name
modulu.
Install-Module -Name Pester
Když spustíte Install-Module
, PowerShell vás vyzve k nedůvěryhodnému úložišti, protože úložiště je označeno jako nedůvěryhodné. Pro testování toto varování není důvod k obavám, takže zadejte A pro potvrzení.
Jakmile je modul nainstalován, spusťte nyní Get-InstalledModule
cmdlet a uvidíte, že Pester byl nainstalován a jeho příkazy jsou nyní k dispozici.
Uvidíte to také pomocí Get-Command
cmdlet, můžete také najít všechny příkazy uvnitř Pester
modulu, jak je uvedeno níže.
Get-Command -Module Pester
Spouštění skriptů PowerShell z Bash
Abychom tento tutoriál uzavřeli, skončeme spuštěním skriptů PowerShell z Bash. V průběhu tohoto kurzu jste interaktivně spouštěli příkazy PowerShellu v konzole PowerShellu. Pokud máte skript PowerShell, který potřebujete spustit, není nutné přecházet do konzoly PowerShell. Místo toho můžete skript spustit přímo z Bash.
Chcete-li předvést spuštění skriptu PowerShell z Bash, otevřete svůj oblíbený textový editor Linux a vložte následující příkaz a uložte soubor jako DrivesInformation.ps1 . Tento skript jednoduše vyjmenuje všechny jednotky PS.
Get-PSDrive
Ve vašem terminálu Bash namísto spuštění pwsh
, stiskněte Enter a poté spusťte skript v konzole PowerShell, vyvolejte skript přímo z Bash. Chcete-li to provést, spusťte pwsh
znovu, ale tentokrát zadejte skript PowerShell, který jste právě vytvořili, jak je znázorněno níže.
Uvidíte, že obdržíte stejný výstup, jaký byste obdrželi v interaktivní relaci PowerShell přímo ve vašem terminálu Bash.
pwsh /home/tex/DrivesInformation.ps1
Závěr
Nyní byste měli mít dobrý začátek se spuštěním PowerShellu v Linuxu! Nyní je na vás, abyste se začali učit více o PowerShellu a automatizaci všeho, co můžete!