Adam Automator (Română)

În PowerShell, există câteva miliarde de modalități de a face același lucru (sau aproape de el). În această postare de blog, veți afla cum puteți verifica versiunea PowerShell pe care o aveți pe computerele locale și la distanță. Vom acoperi căile rele și calea mea recomandată.

Dacă doriți să treceți de la începutul PowerShell la guru-ul PowerShell, vă recomand să devorați acest lucru GRATUIT mini-curs despre construirea unui instrument PowerShell. Acesta este un tutorial pas cu pas, cu explicații complete și îndrumări de la Adam Automator!

Există site-uri web care prezintă diferite modalități de a verifica versiunea Powershell. Dar niciunul care nu a compilat o listă cuprinzătoare cu toate acestea. Am decis să schimb asta.

Toate aceste moduri ar trebui să funcționeze atât în Windows PowerShell, cât și în PowerShell Core. Aceste metode ar trebui să funcționeze și în versiunile 1.0 de Windows PowerShell până la PowerShell 7.

Modurile în care puteți afla o versiune de PowerShell pe care o executați sunt:

  1. Proprietatea (Get-Host).Version
  2. Proprietatea $host.Version
  3. Registrul (numai Windows PowerShell)
  4. Proprietatea $PSVersionTable.PSVersion

Să descompunem toate modalitățile de a găsi versiunea PowerShell de la cel mai puțin la cel mai recomandat mod .

Cuprins

Get-Host

PowerShell are un concept cunoscut sub numele de hosts. O gazdă este un program care găzduiește motorul PowerShell. Nu este motorul PowerShell în sine. Consola PowerShell sau un editor de cod cu un terminal integrat sunt gazde PowerShell.

O gazdă poate avea o versiune complet independentă de PowerShell în sine. Acest lucru poate fi înșelător pentru mulți nou-veniți. Permiteți-mi să vă arăt de ce.

Dacă rulați (Get-Host).Version, veți vedea că returnează un număr de versiune care pare că ar putea fi versiunea motorului PowerShell. Aspectele pot fi înșelătoare.

Mai jos am rulat Get-Host pe Windows PowerShell 5.1 și puteți vedea că revine cu 5.1.17134.858. Aceasta arată ca o versiune legitimă.

Cu toate acestea, uneori când rulați Get-Host într-un terminal integrat, versiunea nu este aceeași. Deși, de obicei, gazda va reprezenta aceeași versiune a motorului, nu este necesar să faceți acest lucru întotdeauna.

Verificați versiunea Powershell prin Get-Host pe computere la distanță

Chiar dacă Get-Host pare să returneze aceeași versiune atunci când este rulată pe un computer local, nu se va întâmpla niciodată pe computerele la distanță.

De exemplu, să rulăm Get-Host pe un server Windows Server 2016 la distanță prin Invoke-Command și vedeți ce se întâmplă.

Ultima dată când am verificat, nu este posibil să rulați PowerShell v1 pe Windows Server 2016.

Bazându-se pe Get-Host este doar o idee proastă în jur.

Verificați Powershell Version $ host.Comandă versiune

Referirea la $host.Version este un alt mod de a verifica versiunea Powershell. Variabila $host este o variabilă automată care returnează aceeași ieșire ca Get-Host.

Referință $host.Version

Nu există nimic special în această metodă. Este pur și simplu același lucru cu executarea Get-Host.

$ host.Version on Remote Computers

Veți vedea același comportament prin PowerShell Remoting cu $host.Version așa cum veți rula Get-Host.

Pericol, Will Robinson!

Registrul

Dacă nu doriți să deschideți PowerShell în sine, puteți verifica și registrul. Versiunea PowerShell este ascunsă sub o valoare din calea cheii de registry HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine. Această cheie de registry are o valoare numită PowerShellVersion pe care o puteți face referință utilizând Get-ItemProperty.

Puteți vedea că acest lucru versiunea este similară, dar nu include revizuirea, așa cum fac și celelalte opțiuni.

Utilizarea altor instrumente

Utilizarea registrului înseamnă, de asemenea, că nu trebuie să utilizați PowerShell deloc pentru a găsi versiunea. Puteți rula comenzi din promptul de comandă sau dintr-un alt instrument care poate citi registrul.

Registrul pe computere la distanță

Registrul este static și valorile nu se vor modifica local sau de la distanță. Puteți avea încredere că ceea ce vedeți la nivel local va fi la fel ca la distanță.

Afișarea aceleiași versiuni la nivel local și de la distanță este bună. Dar am un mod mai bun de a vă arăta folosind variabila automată $PSVersionTable.

Verificați versiunea Powershell prin comanda $ PSVersionTable.PSVersion

Ultima și ultima metodă face trimitere la PSVersion proprietate pe variabila automată $PSVersionTable.Această metodă va reprezenta întotdeauna motorul PowerShell.

Variabila automată $PSVersionTable este un tabel hash numai în citire care returnează informații în mod specific despre versiunea de motor PowerShell. Această variabilă automată returnează nu numai versiunea, ci și PSEdition. Această proprietate poate fie Core, fie Desktop pentru a furniza informații suplimentare despre ediția PowerShell care rulează.

$ PSVersionTable output

$ PSVersionTable pe computere la distanță

Utilizarea $PSVersionTable variabila automată este precisă local, deoarece este de la distanță. Puteți vedea mai jos că, împachetând $PSVersionTable.PSVersion într-un bloc de scripturi și executând acel cod pe un computer la distanță, acesta va returna aceeași versiune.

Rezumat

În această postare de blog, ați învățat toate modalitățile de a verifica versiunea PowerShell atât local, cât și de la distanță. Sper că primele câteva metode v-au dat o idee despre modalitățile de a nu verifica versiunea!

Vă recomand să folosiți întotdeauna $PSVersionTable.PSVersion. Toate celelalte metode pot părea similare cu versiunea motorului PowerShell, dar nu întotdeauna reflectă versiunea motorului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *