Open Source Powershell v6

Jag tänkte skriva lite om Powershell version 6 och insåg att det blev lite mycket på en gång så detta blir första delen av två. Denna artikel är en sammanfattning av Richard Siddaways utmärkta artikel om Powershell. 

Windows Powershell släpptes första gången i november 2006 och fanns att installera för Windows Vista och Server 2008 samt tidigare versioner av Windows. Varje efterföljande Windowsversion har följts av en ny version av Powershell. Senaste versionen (i skrivande stund, våren 2018) är version 5.1 som kom med Windows Server 2016 och Windows 10 Anniversary Update.

Version 5.1 finns även tillgänglig för äldre versioner av Windows.


Jag tror inte att det undgått någon vid det här laget att Powershell-kunskaper är något av det viktigaste man bör skaffa sig om man arbetar med administration och automatisering inom Microsoft (och Linux) världen. Skälen är många:  https://www.techrepublic.com/blog/10-things/10-reasons-why-you-should-learn-to-use-powershell/ (TechRepublic – 10 Reasons why you should learn to use Powershell). En bra början är att gå en kurs via Cornerstone Addskills.

Powershell-ekosystemet ändrades dramatiskt då det annonserades i augusti 2016 att Powershell skulle bli ett Open Source projekt och att Powershell skulle släppas till Linux och Mac (samt äldre versioner av Windows). Efter flera beta-versioner släpptes den första versionen av open source PowerShell i januari 2018 som PowerShell v6.0 men bytte snabbt namn till v6.0.1 (pga. Versionshanteringsproblem med Linux och .NET core v2.0.5). Powershell v6 finns tillgängligt via GitHub https://github.com/PowerShell/PowerShell och installeras enkelt som ett MSI-paket. 

 

Det är viktigt att känna till att Powershell v6 INTE är tänkt att ersätta Windows Powershell v5.1. Powershell v6 kan installeras tillsammans med Windows Powershell 5.1. Observera skillnaden i namn. Windows PowerShell refererar till PowerShell som följer med Windows och PowerShell refererar till open source projektet. Det är till och med olika ikoner för att skilja dem åt.



Till vänster ser vi ikonen för PowerShell och till höger ikonen för Windows PowerShell.
Efter installationen så hittar vi båda alternativen under startmenyn.

En sökning på ”Powershell” genererar följande (se bild ovan). 

Det finns flera viktiga skillnader mellan PowerShell och Windows PowerShell. Windows PowerShell använder kompletta .NET CLR (Common Language Runtime) medan PowerShell använder .NET Core som är en cross-platform implementering av .NET och som innehåller mindre funktioner. Bland annat har Windows-specifika funktioner tagits bort. En annan viktig skillnad är att Windows PowerShell startas med powershell.exe och PowerShell startas med pwsh.exe. Standardutseendet för fönstren skiljer sig också åt.

 

I förgrunden ser vi PowerShell (pwsh.exe) med svart bakgrundsfärg till skillnad från traditionella blå färgen. Observera sökvägen C:\program Files\ där PowerShell installeras till skillnad från C:\Windows\System32.

Att exe-filernas namn skiljer sig åt minskar förvirringen men gör även att powershell.exe kan köra pwsh.exe och tvärt om.

Eftersom PowerShell v6 är cross-platform så finns det ett begränsat antal moduler tillgängliga på Windowsplattformen om man jämför med Windows PowerShell. Följande moduler följer med core-paketet med PowerShell v6 för Windows:

• CimCmdlets
• Microsoft.PowerShell.Archive
• Microsoft.PowerShell.Diagnostics
• Microsoft.PowerShell.Host
• Microsoft.PowerShell.Management
• Microsoft.PowerShell.Security
• Microsoft.PowerShell.Utility
• Microsoft.WSMan.Management

Följande tilläggsmoduler finns tillgängliga:
• PackageManagement
• PowerShellGet
• PSDesiredStateConfiguration
• PSDiagnostics
• PSReadLine

Den stora frågan som de flesta funderar på är varför man ska bry sig om PowerShell v6 och om det finns någon poäng med att installera och använda det. Det finns flera anledningar till att börja använda PowerShell v6 (sida vid sida med v5.1):

• Betydligt snabbare
• Open source innebär nya versioner och uppdateringar oftare (större versionsuppdateringar är planerat till att ske var 6:e månad)
• All framtida utveckling av Powershell kommer att ske via open source projektet

I nästa del kommer jag att ta upp fler skillnader mellan Windows PowerShell och PowerShell samt en hel del ”bra att veta-saker” och diskussion kring när man har nytta av Powershell v6.