Adam Automator (Svenska)

I PowerShell finns det zillioner sätt att göra samma sak (eller nära det). I det här blogginlägget lär du dig på alla sätt kontrollera PowerShell-versionen som du har på lokala och fjärrdatorer. Vi kommer att täcka de dåliga sätten och mitt rekommenderade sätt.

Om du vill gå från PowerShell-nybörjare till PowerShell-guru, rekommenderar jag att sluka detta GRATIS minikurs om att bygga ett PowerShell-verktyg. Detta är en steg-för-steg-handledning med fullständiga förklaringar och vägledning från Adam the Automator!

Det finns webbplatser som visar olika sätt att kontrollera Powershell-versionen. Men ingen som sammanställde en omfattande lista över dem alla. Jag bestämde mig för att ändra det.

Alla dessa sätt ska fungera i både Windows PowerShell och PowerShell Core. Dessa metoder ska också fungera i Windows PowerShell version 1.0 hela vägen upp till PowerShell 7.

Sätten du kan ta reda på en version av PowerShell du kör är:

  1. Egenskapen (Get-Host).Version
  2. $host.Version
  3. Registret (endast Windows PowerShell)
  4. Egenskapen $PSVersionTable.PSVersion

Låt oss dela upp alla sätt att hitta versionen av PowerShell från det minsta till det mest rekommenderade sättet .

Innehållsförteckning

Get-Host

PowerShell har ett koncept som kallas värdar. En värd är ett program som är värd för PowerShell-motorn. Det är inte PowerShell-motorn i sig. PowerShell-konsolen eller en kodredigerare med en integrerad terminal är PowerShell-värdar.

En värd kan ha en version som är helt oberoende av PowerShell själv. Detta kan lura många nykomlingar. Låt mig visa varför.

Om du kör (Get-Host).Version ser du att det returnerar ett versionsnummer som ser ut som det kan vara PowerShell-motorversionen. Utseendet kan bedra.

Nedan har jag kört Get-Host på Windows PowerShell 5.1 och du kan se att det kommer tillbaka med 5.1.17134.858. Detta ser ut som en legitim version.

Men ibland när du kör Get-Host i en integrerad terminal, versionen är inte densamma. Även om värden vanligtvis representerar samma version av motorn, behöver du inte alltid göra det.

Kontrollera Powershell-versionen via Get-Host på fjärrdatorer

Även om Get-Host verkar returnera samma version när den körs på en lokal dator, den kommer aldrig på fjärrdatorer.

Låt oss till exempel köra Get-Host på en fjärrserver för Windows Server 2016 via Invoke-Command och se vad som händer.

Förra gången jag kollade är det inte möjligt att köra PowerShell v1 på Windows Server 2016.

Förlita sig på Get-Host är bara en dålig idé överallt.

Kontrollera Powershell Version $ host.Version-kommando

Referenser till $host.Version är ett annat sätt att kontrollera Powershell-versionen. $host -variabeln är en automatisk variabel som returnerar samma utdata som Get-Host.

Referenser $host.Version

Det finns inget speciellt med den här metoden. Det är helt enkelt detsamma som att köra Get-Host.

$ host. Version på fjärrdatorer

Du kommer att se samma beteende via PowerShell Remoting med $host.Version när du kör Get-Host.

Fara, Will Robinson!

Register

Om du inte vill öppna PowerShell själv kan du också kontrollera registret. Versionen av PowerShell är undangömd under ett värde i registernyckelvägen HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine. Den här registernyckeln har ett värde som heter PowerShellVersion som du kan referera till med Get-ItemProperty.

Du kan se att detta versionen liknar men inkluderar inte revisionen som de andra alternativen gör.

Använda andra verktyg

Att använda registret betyder också att du inte alls behöver använda PowerShell för att hitta versionen. Du kan köra kommandon från kommandotolken eller ett annat verktyg som kan läsa registret.

Registret på fjärrdatorer

Registret är statiskt och värdena ändras inte lokalt eller fjärrstyrt. Du kan vara säker på att det du ser lokalt kommer att vara detsamma som du ser på distans.

Att visa samma version lokalt och fjärr är bra. Men jag har ett bättre sätt att visa dig med $PSVersionTable automatisk variabel.

Kontrollera Powershell-version via $ PSVersionTable.PSVersion-kommandot

Den sista och sista metoden hänvisar till PSVersion -egenskapen på $PSVersionTable automatisk variabel.Den här metoden representerar alltid PowerShell-motorn.

Den automatiska variabeln $PSVersionTable är en skrivskyddad hashtabell. som returnerar information specifikt om PowerShell-motorversionen. Den här automatiska variabeln returnerar inte bara versionen utan också PSEdition. Den här egenskapen kan antingen Core eller Desktop för att ge ytterligare information om den version av PowerShell som körs.

$ PSVersionTable-utgång

$ PSVersionTable på fjärrdatorer

Med $PSVersionTable automatisk variabel är korrekt lokalt eftersom den är fjärrstyrd. Du kan se nedan genom att lägga in $PSVersionTable.PSVersion i ett skriptblock och köra koden på en fjärrdator, den kommer att returnera samma version.

Sammanfattning

I det här blogginlägget har du lärt dig alla sätt att kontrollera versionen av PowerShell både lokalt och på distans. Jag hoppas att de första metoderna gav dig en idé om vilka sätt att inte kontrollera versionen!

Jag rekommenderar att du alltid använder $PSVersionTable.PSVersion. Alla andra metoder kan se ut som PowerShell-motorversionen men kanske inte alltid återspeglar motorversionen.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *