A PowerShellben több mint száz módszer létezik ugyanarra (vagy annak közelében). Ebben a blogbejegyzésben megtudhatja, hogyan ellenőrizheti a helyi és távoli számítógépeken használt PowerShell verziót. Kitérünk a rossz módszerekre és az általam ajánlott módokra.
Ha a PowerShell újoncról a PowerShell gurura szeretne menni, akkor azt javaslom, hogy felfalja ezt az INGYENES mini tanfolyam a PowerShell eszköz felépítéséről. Ez egy lépésről lépésre bemutató útmutató, amely teljes magyarázatokat és útmutatásokat nyújt Ádám Automata részéről!
Vannak olyan webhelyek, amelyek különböző módon mutatják be a Powershell verziójának ellenőrzését. De egyik sem állította össze az összes átfogó listáját. Úgy döntöttem, hogy ezen változtatok.
Mindezeknek a módoknak működniük kell a Windows PowerShell és a PowerShell Core programokban egyaránt. Ezeknek a módszereknek a Windows PowerShell 1.0 verzióiban is működniük kell, egészen a PowerShell 7-ig.
A PowerShell futtatott verziójának megismerésére a következő módok tartoznak:
- A
(Get-Host).Version
tulajdonság - A
$host.Version
tulajdonság - A rendszerleíró adatbázis (csak a Windows PowerShell)
- A
$PSVersionTable.PSVersion
tulajdonság
Bontjuk le a PowerShell verziójának megtalálásának minden módját a legkevésbé ajánlott módon .
Tartalom-jegyzék
Get-Host
A PowerShell fogalmát hostként ismerik. A gazdagép egy olyan program, amely a PowerShell motort tárolja. Nem maga a PowerShell motor. A PowerShell konzol vagy az integrált terminállal rendelkező kódszerkesztő a PowerShell hosztja.
A gazdagépnek lehet olyan verziója, amely teljesen független magától a PowerShelltől. Ez sok újonc számára megtévesztő lehet. Hadd mutassam meg, miért.
Ha az (Get-Host).Version
programot futtatja, akkor látni fogja, hogy a verziószámot úgy adja vissza, mintha a PowerShell motor verziója lenne. A látszat megtévesztő lehet.
Az alábbiakban a Get-Host
fájlt futtattam a Windows PowerShell 5.1-en, és láthatja, hogy 5.1.17134.858-mal érkezik. Ez törvényes verziónak tűnik.
Azonban néha, amikor a Get-Host
parancsot integrált terminálon futtatja, a verzió nem ugyanaz. Bár általában a gazdagép a motor ugyanazon verzióját fogja képviselni, nem mindig szükséges ezt megtenni.
Ellenőrizze a Powershell verziót a távoli számítógépeken található Get-Host segítségével
Annak ellenére, hogy Get-Host
ugyanazt a verziót adja vissza, ha helyi számítógépen futtatja, távoli számítógépeken pedig soha.
Futtassuk például: Get-Host
egy távoli Windows Server 2016 szerveren a Invoke-Command
keresztül, és nézze meg, mi történik.
A legutóbbi ellenőrzéskor nem lehet futtatni a PowerShell v1-et Windows Server 2016.
Az Get-Host
hivatkozás csak rossz ötlet.
Ellenőrizze a Powershell $ host host verzióját. Verzió parancs
A $host.Version
hivatkozás a Powershell verziójának másik ellenőrzési módja. A $host
változó egy automatikus változó, amely ugyanazt a kimenetet adja vissza, mint a Get-Host
.
Nincs semmi különös ebben a módszerben. Egyszerűen megegyezik a Get-Host
futtatásával.
$ host.Version távoli számítógépeken
Ugyanezt a viselkedést fogja látni a PowerShell segítségével Remoting with $host.Version
a Get-Host
futtatásakor.
Veszély, Will Robinson!
Nyilvántartás
Ha nem akarja megnyitni magát a PowerShellt, akkor ellenőrizheti a rendszerleíró adatbázist is. A PowerShell verziója el van rejtve a HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
rendszerleíró kulcs elérési útjának egyik értéke alatt. Ennek a rendszerleíró kulcsnak van egy PowerShellVersion
nevű értéke, amelyre a Get-ItemProperty
használatával hivatkozhat.
Láthatja, hogy ez verzió hasonló, de nem tartalmazza a változatot, mint a többi opció.
Egyéb eszközök használata
A rendszerleíró adatbázis használata azt is jelenti, hogy egyáltalán nem kell a PowerShellt használni a verzió. Futtathat parancsokat a parancssorból vagy egy másik eszközből, amely képes olvasni a rendszerleíró adatbázist.
Nyilvántartás távoli számítógépeken
A rendszerleíró adatbázis statikus, és az értékek nem változnak helyileg vagy távolról. Biztos lehet benne, hogy amit helyben lát, ugyanaz lesz, mint távolról.
Helyes és távoli azonos verzió megjelenítése jó. De van egy jobb módom a $PSVersionTable
automatikus változó használatával.
Ellenőrizze a Powershell verzióját a $ PSVersionTable.PSVersion paranccsal
Az utolsó és az utolsó módszer az PSVersion
tulajdonság hivatkozása az $PSVersionTable
automatikus változóra.Ez a módszer mindig a PowerShell motort fogja képviselni.
Az $PSVersionTable
automatikus változó csak olvasható hash tábla amely kifejezetten a PowerShell engin verzióról ad információt. Ez az automatikus változó nemcsak a verziót adja vissza, hanem PSEdition
is. Ez a tulajdonság akár a Core, akár az Asztalon további információkat nyújt a futó PowerShell kiadásról.
$ PSVersionTable távoli számítógépeken
A automatikus változó helyileg pontos, mivel távolról van. Az alábbiakban láthatja, hogy ha $PSVersionTable.PSVersion
csomagol egy szkriptblokkba, és végrehajtja a kódot egy távoli számítógépen, akkor az ugyanazt a verziót adja vissza.
Összegzés
Ebben a blogbejegyzésben megtanulta a PowerShell verziójának helyi és távoli ellenőrzésének összes módját. Remélem, hogy az első néhány módszer ötletet adott arra, hogy milyen módon ne ellenőrizze a verziót!
Javasoljuk, hogy mindig használja a $PSVersionTable.PSVersion
parancsot. Az összes többi módszer hasonló lehet a PowerShell motor verziójához, de nem mindig tükrözi a motor verzióját.