I PowerShell, det er en zillion måter å gjøre det samme (eller nesten). I dette blogg innlegget, vil du lære alle måter sjekk PowerShell-versjon du har på lokale og eksterne datamaskiner. Vi vil dekke den dårlige veier og mine anbefalte måte.
Hvis du ønsker å gå fra PowerShell nybegynner til PowerShell guru, anbefaler jeg sluker denne GRATIS mini-kurs om å bygge en PowerShell-verktøyet. Dette er en steg-for-steg tutorial med full forklaringer og veiledning fra Adam Automator!,
Det finnes nettsteder som viser ulike måter å sjekke Powershell-versjon. Men ingen som er utarbeidet en omfattende liste over alle dem. Jeg bestemte meg for å endre på dette.
Alle disse måter skal fungere i både Windows PowerShell og PowerShell Kjerne. Disse metodene bør også fungere i Windows PowerShell versjon 1.0 hele veien opp til PowerShell-7.,
måter du kan finne ut en versjon av PowerShell du kjører er:
-
(Get-Host).Version
eiendel -
$host.Version
eiendel - registeret (Windows PowerShell bare)
-
$PSVersionTable.PSVersion
eiendel
La oss bryte ned alle måter å finne den versjonen av PowerShell fra minst til mest anbefalte måten.
Innholdsfortegnelse
Få-Vert
PowerShell har et konsept som er kjent som verter. En vert er et program som er vert for PowerShell-motoren., Det er ikke PowerShell-motoren i seg selv.PowerShell-konsollen eller en kode editor med et integrert terminal er PowerShell, allhers gud.
En verten kan ha en versjon som er helt uavhengig av PowerShell i seg selv. Dette kan være lure å mange nykommere. La meg vise deg hvorfor.
Hvis du kjører (Get-Host).Version
, vil du se at den returnerer et versjonsnummer som ser ut som det kan bli PowerShell-motoren versjon. Utseende kan bedra.
Nedenfor har jeg kjørte Get-Host
Windows PowerShell 5.1 og du kan se at den kommer tilbake med 5.1.17134.858., Dette ser ut som en legitim versjon.
Men, noen ganger når du kjører Get-Host
i en integrert terminal, versjon er ikke det samme. Selv om det vanligvis vil være vert representerer samme versjon av motoren, er det ikke nødvendig å alltid gjøre det.
Se Powershell-Versjon via Get-Vert på Eksterne Datamaskiner
Selv om Get-Host
ser ut til å returnere den samme versjonen når du kjører på en lokal datamaskin, det vil aldri på eksterne datamaskiner.,
For eksempel, la oss kjøre Get-Host
på en ekstern Windows Server 2016 server via Invoke-Command
og se hva som skjer.
sist gang jeg sjekket, det er ikke mulig å kjøre PowerShell-v1 på Windows Server 2016.
å Stole på Get-Host
er bare en dårlig idé, alle rundt.
Sjekk Powershell Versjon $host.Versjon kommandoen
Referanse $host.Version
er en annen måte å sjekke Powershell-versjon. $host
variabel er en automatisk variabel som gir samme effekt som Get-Host
.,
Det er ikke noe spesielt om denne metoden. Det er rett og slett det samme som å kjøre Get-Host
.
$host.Versjonen på Eksterne Datamaskiner
Du vil se den samme atferd via PowerShell Remoting med $host.Version
så vil du kjører Get-Host
.
Fare, Vil Robinson!
Register
Hvis du ikke ønsker å åpne opp PowerShell selv, kan du også sjekke registeret., Den versjonen av PowerShell er gjemt bort under en verdi i registernøkkelen bane HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
. Denne registernøkkelen har en verdi som kalles PowerShellVersion
som du kan bruke ved hjelp av Get-ItemProperty
.
Du kan se at denne versjonen er tilsvarende, men som ikke omfatter revisjon som de andre alternativene gjøre.
Bruke Andre Verktøy
ved Hjelp av registeret betyr også at du ikke trenger å bruke PowerShell til å finne den versjonen. Du kan kjøre kommandoer fra ledeteksten eller et annet verktøy som kan lese registeret.,
Registret på Eksterne Datamaskiner
registret er statisk og verdier vil ikke endres lokalt eller eksternt. Du kan være trygg på at det du ser lokalt vil være den samme som du ser eksternt.
som Viser den samme versjonen lokalt og eksternt, er god. Men jeg har fått en bedre måte å vise at du bruker $PSVersionTable
automatisk variabel.
Sjekk Powershell-Versjon via $PSVersionTable.PSVersion kommandoen
Den siste og endelige metoden refererer PSVersion
eiendom på $PSVersionTable
automatisk variabel., Denne metoden vil alltid representere PowerShell-motoren.
$PSVersionTable
automatisk variabel er en skrivebeskyttet hash-tabell som gir informasjon om PowerShell-motoren versjon. Denne automatiske variabel ikke bare returnerer versjon, men også PSEdition
. Denne egenskapen kan enten Core eller Skrivebordet for å gi ytterligere informasjon om den utgaven av PowerShell som kjører.,
$PSVersionTable på Eksterne Datamaskiner
Med $PSVersionTable
automatisk variabel er nøyaktige lokalt som det er eksternt. Nedenfor ser du at ved å pakke $PSVersionTable.PSVersion
i en scriptblock og utfører den koden på en ekstern datamaskin, vil den gå tilbake samme versjon.
Oppsummering
I dette blogg innlegget, du har lært alle måter til å sjekke versjonen av PowerShell både lokalt og eksternt., Jeg håper de første par metoder ga deg en pekepinn på hvilke måter ikke til å sjekke versjonen!
jeg anbefaler at du alltid bruker $PSVersionTable.PSVersion
. Alle andre metoder kan vises ligner på PowerShell-motoren-versjon, men kan ikke alltid reflekterer motoren versjon.