Adam Automatorn

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

om du vill gå från PowerShell newbie till PowerShell guru rekommenderar jag att du slukar denna gratis mini-kurs på att bygga ett PowerShell-verktyg. Detta är en steg-för-steg-handledning med fullständiga förklaringar och vägledning från Adam Automatorn!,

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

alla dessa sätt bör fungera i både Windows PowerShell och PowerShell Core. Dessa metoder bör också fungera i Windows PowerShell versioner 1.0 hela vägen upp till PowerShell 7.,

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

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

låt oss bryta ner alla sätt att hitta versionen av PowerShell från minst till mest rekommenderade sätt.

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 själv.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. Utseende kan lura.

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., Det här ser ut som en legitim version.

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

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

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

låt oss till exempel köraGet-Host på en fjärrserver för Windows Server 2016 viaInvoke-Command och se vad som händer.

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

att förlita sig påGet-Host är bara en dålig idé runt.

Kontrollera Powershell Version $host.Version kommando

Referenser $host.Version är ett annat sätt att kontrollera Powershell version. Variabeln$host är en automatisk variabel som returnerar samma utdata somGet-Host.,

referera $host.Version

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

$värd.Version på fjärrdatorer

Du kommer att se samma beteende via PowerShell Remoting med $host.Versionsom du kommer att köra Get-Host.

fara, kommer Robinson!

register

om du inte vill öppna PowerShell själv kan du också kontrollera registret., Versionen av PowerShell är undanstoppad under ett värde i registernyckelvägen HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine. Registernyckeln har ett värde som heter PowerShellVersion som du kan referera till genom att använda Get-ItemProperty.

Du kan se att den här versionen är likartad men innehåller inte revideringen som de andra alternativen gör.

använda andra verktyg

med hjälp av registret innebär också att du inte behöver använda PowerShell alls 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 på distans. Du kan vara säker på att det du ser lokalt kommer att vara detsamma som du ser på distans.

visar samma version lokalt och på distans är bra. Men jag har ett bättre sätt att visa dig med $PSVersionTable automatisk variabel.

Kontrollera Powershell Version via $PSVersionTable.PSVersion command

den sista och sista metoden refererar till egenskapen PSVersionpå den automatiska variabeln $PSVersionTable., Denna metod kommer alltid att representera PowerShell-motorn.

den automatiska variabeln$PSVersionTable är en skrivskyddad hashtabell som returnerar information specifikt om PowerShell engin-versionen. Denna automatiska variabel returnerar inte bara versionen utan även PSEdition. Den här egenskapen kan antingen kärna eller skrivbord för att ge ytterligare information om upplagan av PowerShell som körs.,

$PSVersionTable utgång

$PSVersionTable på fjärrdatorer

använda$PSVersionTable automatisk variabel är korrekt lokalt som det är på distans. Du kan se nedan att genom att paketera $PSVersionTable.PSVersion I ett scriptblock och köra den koden på en fjärrdator kommer den 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 likna PowerShell-motorversionen men kanske inte alltid återspeglar motorversionen.

Lämna ett svar

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