Adam Automator

I PowerShell er der en zillion måder at gøre det samme (eller tæt på det). I dette blogindlæg lærer du alle måder at kontrollere PowerShell-versionen, du har på lokale og eksterne computere. Vi dækker de dårlige måder og min anbefalede måde.

Hvis du vil gå fra PowerShell-nybegynder til PowerShell-guru, anbefaler jeg at fortære denne GRATIS mini-kursus om opbygning af et PowerShell-værktøj. Dette er en trinvis vejledning med fulde forklaringer og vejledning fra Adam the Automator!

Der er websteder, der viser forskellige måder at kontrollere Powershell-versionen på. Men ingen der samlede en omfattende liste over dem alle. Jeg besluttede at ændre det.

Alle disse måder skal fungere i både Windows PowerShell og PowerShell Core. Disse metoder skal også fungere i Windows PowerShell version 1.0 helt op til PowerShell 7.

De måder, du kan finde ud af en version af PowerShell, du kører, er:

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

Lad os opdele alle måder at finde versionen af PowerShell fra den mindst til den mest anbefalede måde .

Indholdsfortegnelse

Get-Host

PowerShell har et koncept kendt som værter. En vært er et program, der er vært for PowerShell-motoren. Det er ikke selve PowerShell-motoren. PowerShell-konsollen eller en kodeditor med en integreret terminal er PowerShell-værter.

En vært kan have en version, der er fuldstændig uafhængig af selve PowerShell. Dette kan bedrage mange nyankomne. Lad mig vise dig hvorfor.

Hvis du kører (Get-Host).Version, vil du se, at det returnerer et versionsnummer, der ser ud til at kunne være PowerShell-motorversionen. Udseendet kan bedrage.

Nedenfor har jeg kørt Get-Host på Windows PowerShell 5.1, og du kan se, at det kommer tilbage med 5.1.17134.858. Dette ligner en legitim version.

Men nogle gange når du kører Get-Host i en integreret terminal, version er ikke den samme. Selvom værten normalt vil repræsentere den samme version af motoren, skal du ikke altid gøre det.

Kontroller Powershell-version via Get-Host på fjerncomputere

Selvom Get-Host ser ud til at returnere den samme version, når den køres på en lokal computer, det vil den aldrig på fjerncomputere.

Lad os for eksempel køre Get-Host på en ekstern Windows Server 2016-server via Invoke-Command og se hvad der sker.

Sidste gang jeg tjekkede, er det ikke muligt at køre PowerShell v1 på Windows Server 2016.

At stole på Get-Host er bare en dårlig idé overalt.

Kontroller Powershell Version $ host.Version-kommando

Henvisning til $host.Version er en anden måde at kontrollere Powershell-versionen på. $host -variablen er en automatisk variabel, der returnerer den samme output som Get-Host.

Henvisning til $host.Version

Der er ikke noget særligt ved denne metode. Det er simpelthen det samme som at køre Get-Host.

$ host. Version på fjerncomputere

Du vil se den samme adfærd via PowerShell Remoting med $host.Version som du kører Get-Host.

Fare, Will Robinson!

Registreringsdatabase

Hvis du ikke ønsker at åbne PowerShell selv, kan du også kontrollere registreringsdatabasen. Versionen af PowerShell gemmes væk under en værdi i registreringsdatabasenøglens sti HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine. Denne registreringsdatabasenøgle har en værdi kaldet PowerShellVersion, som du kan henvise til ved hjælp af Get-ItemProperty.

Du kan se, at dette version er ens, men inkluderer ikke revisionen som de andre muligheder gør.

Brug af andre værktøjer

Brug af registreringsdatabasen betyder også, at du slet ikke behøver at bruge PowerShell for at finde versionen. Du kan køre kommandoer fra kommandoprompten eller et andet værktøj, der kan læse registreringsdatabasen.

Registreringsdatabase på eksterne computere

Registret er statisk, og værdierne ændres ikke lokalt eller eksternt. Du kan være sikker på, at det, du ser lokalt, vil være det samme som du ser eksternt.

Det er godt at vise den samme version lokalt og eksternt. Men jeg har en bedre måde at vise dig ved hjælp af $PSVersionTable automatisk variabel.

Kontroller Powershell-version via $ PSVersionTable.PSVersion-kommando

Den sidste og sidste metode henviser til egenskaben PSVersion$PSVersionTable automatisk variabel.Denne metode repræsenterer altid PowerShell-motoren.

Den automatiske variabel $PSVersionTable er en skrivebeskyttet hash-tabel der returnerer information specifikt om PowerShell-motorversionen. Denne automatiske variabel returnerer ikke kun versionen, men også PSEdition. Denne egenskab kan enten Core eller Desktop for at give yderligere oplysninger om den udgave af PowerShell, der kører.

$ PSVersionTable-output

$ PSVersionTable på fjerncomputere

Brug af $PSVersionTable automatisk variabel er nøjagtig lokalt, da den er ekstern. Du kan se nedenfor, at ved at indpakke $PSVersionTable.PSVersion i en scriptblock og udføre denne kode på en fjerncomputer, vil den returnere den samme version.

Oversigt

I dette blogindlæg har du lært alle måder at kontrollere versionen af PowerShell både lokalt og eksternt. Jeg håber, at de første par metoder gav dig en idé om, hvilke måder du ikke kan kontrollere versionen på!

Jeg anbefaler altid at bruge $PSVersionTable.PSVersion. Alle de andre metoder kan se ud som PowerShell-motorversionen, men afspejler muligvis ikke altid motorversionen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *