Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

วิธีตรวจสอบเวอร์ชัน PowerShell ที่ติดตั้งอยู่

ในบทความนี้เราจะเรียนรู้ว่ามีเวอร์ชัน PowerShell อะไรบ้าง ความแตกต่างระหว่าง Windows PowerShell และ PowerShell Core และวิธีตรวจสอบเวอร์ชัน PowerShell ที่ติดตั้งอยู่บนคอมพิวเตอร์ท้องถิ่นหรือระยะไกล

ประวัติและเวอร์ชันของ Windows PowerShell และ PowerShell Core

PowerShell ติดตั้งมาพร้อมใน Windows ทุกเวอร์ชันตั้งแต่ Windows 7 SP1 และ Windows Server 2008 R2 SP1 ตารางต่อไปนี้แสดงรายการเวอร์ชัน PowerShell ทั้งหมด:

PS Version Note
PowerShell 1.0 ติดตั้งด้วยตนเองบน Windows Server 2003 SP1 และ Windows XP
PowerShell 2.0 Windows Server 2008 R2 และ Windows 7
PowerShell 3.0 Windows 8 และ Windows Server 2012
PowerShell 4.0 Windows 8.1 และ Windows Server 2012 R2
PowerShell 5.0 ติดตั้งมาพร้อม Windows 10 RTM และอัปเดตเป็น 5.1 อัตโนมัติผ่าน Windows Update
PowerShell 5.1 สร้างในตัว Windows 10 (เริ่ม Build 1709) และ Windows Server 2016
PowerShell Core 6.0 และ 6.1 เป็นเวอร์ชัน PowerShell ข้ามแพลตฟอร์มถัดไป (บน .NET Core) ที่ติดตั้งได้บน Windows ทุกเวอร์ชันที่รองรับ และบน MacOS, CentOS, RHEL, Debian, Ubuntu, openSUSE
PowerShell Core 7.0 เป็นเวอร์ชัน PowerShell ล่าสุดที่ปล่อยใน มีนาคม 2020 (ใช้ .NET Core 3.1 แทน .NET Core 2.x)

คุณสามารถติดตั้ง PowerShell เวอร์ชันใหม่กว่าใน Windows เวอร์ชันก่อนหน้าได้ด้วยตนเอง เพื่อทำเช่นนั้น ให้ดาวน์โหลดและติดตั้งเวอร์ชันที่เหมาะสมของ Windows Management Framework (PowerShell เป็นส่วนหนึ่งของมัน)

ควรทราบว่าใน 2 ปีที่ผ่านมา Microsoft หยุดพัฒนา Windows PowerShell แบบคลาสสิก (มีการปล่อยเฉพาะ Bug Fixes และ Security Updates) และมุ่งเน้นไปที่ PowerShell Core แบบโอเพนซอร์สข้ามแพลตฟอร์ม

ความแตกต่างระหว่าง Windows PowerShell และ PowerShell Core?

  1. Windows PowerShell สร้างบน .NET Framework (ตัวอย่างเช่น PowerShell 5 ต้องการ .NET Framework v4.5 ตรวจสอบให้แน่ใจว่าติดตั้งแล้ว) PowerShell Core สร้างบน .Net Core;
  2. Windows PowerShell ทำงานเฉพาะในระบบปฏิบัติการ Windows ในขณะที่ PowerShell Core เป็น Cross-platform และทำงานใน Linux ได้;
  3. PowerShell Core ไม่เข้ากันได้กับ Windows PowerShell อย่างสมบูรณ์ อย่างไรก็ตาม Microsoft กำลังปรับปรุงความเข้ากันได้แบบย้อนหลังกับ Cmdlets และสคริปต์ PS เก่า (แนะนำให้ทดสอบสคริปต์ PS1 เก่าของคุณก่อนย้ายไป PowerShell Core) PowerShell Core 7 ให้ความเข้ากันได้สูงสุดกับ Windows PowerShell;
  4. คุณไม่สามารถใช้ PowerShell ISE Editor เพื่อแก้ไขสคริปต์ PowerShell Core ได้ (แต่สามารถใช้ Visual Studio Code);
  5. เนื่องจาก Windows PowerShell ไม่ได้รับการพัฒนาต่อไป แนะนำให้เริ่มย้ายไป PowerShell Core

วิธีรับเวอร์ชัน PowerShell จากคอนโซล

วิธีที่ง่ายที่สุดในการค้นหาว่าเวอร์ชัน PowerShell ไหนติดตั้งอยู่บนคอมพิวเตอร์ของคุณ คือการใช้คำสั่ง:

host

ตรวจสอบค่าของคุณสมบัติ Version

ภาพหน้าจอต่อไปนี้ถ่ายทำใน Windows 10 ที่มี PowerShell 5.1 ติดตั้งมาพร้อม เช่นเดียวกับ Windows Server 2016

วิธีตรวจสอบเวอร์ชัน PowerShell ที่ติดตั้งอยู่

หรือ

$PSVersionTable

คุณสามารถรับค่าเวอร์ชัน PowerShell เท่านั้น:

$PSVersionTable.PSVersion.major

(ในตัวอย่างนี้เราได้ PSVersion 2.0 ใน Windows Server 2008 R2 ติดตั้งสะอาด)

วิธีตรวจสอบเวอร์ชัน PowerShell ที่ติดตั้งอยู่

คำสั่ง $PSVersionTable ทำงานถูกต้องใน PowerShell Core บนระบบปฏิบัติการที่ต่างกัน

คุณยังสามารถค้นหาเวอร์ชัน PowerShell ที่ติดตั้งผ่าน Registry ได้ ในการทำเช่นนั้น ให้รับค่าพารามิเตอร์ PowerShellVersion ใน Registry Key HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine โดยใช้ Cmdlet Get-ItemProperty:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

วิธีตรวจสอบเวอร์ชัน PowerShell ที่ติดตั้งอยู่

วิธีที่อธิบายข้างต้นทำงานบน Windows Server 2012/Windows 8 หรือใหม่กว่า

ใน Windows Server 2008 R2/Windows 7 คุณสามารถรับค่าพารามิเตอร์ Registry ใน Registry Key อื่น:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

วิธีตรวจสอบเวอร์ชัน PowerShell ที่ติดตั้งอยู่

เพื่อรับเวอร์ชัน PowerShell Core ที่ติดตั้ง ให้ใช้คำสั่งต่อไปนี้:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions* -Name 'SemanticVersion').SemanticVersion

ตรวจสอบเวอร์ชัน PowerShell บนคอมพิวเตอร์ระยะไกล

เพื่อตรวจสอบเวอร์ชัน PowerShell บนโฮสต์ระยะไกล ให้ใช้ค่าของตัวแปรสภาพแวดล้อม $PSVersionTable หรือรับข้อมูลจาก Registry โดยตรง วิธีอื่นอาจคืนค่าข้อมูลที่ไม่ถูกต้อง

คุณสามารถรับเวอร์ชัน PowerShell ที่ติดตั้งบนคอมพิวเตอร์ระยะไกลผ่าน PowerShell Remoting โดยใช้ Cmdlet Invoke-Command:

Invoke-Command -ComputerName mun-dc01 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred
วิธีตรวจสอบเวอร์ชัน PowerShell ที่ติดตั้งอยู่

Major Minor Build Revision PSComputerName ----- ----- ----- -------- -------------- 5 1 14393 3383 mun-dc01

คุณสามารถรับเวอร์ชัน PowerShell ที่ติดตั้งบนคอมพิวเตอร์หลายเครื่องโดยใช้สคริปต์ต่อไปนี้ (รายการคอมพิวเตอร์ระยะไกลต้องระบุเป็นไฟล์ข้อความธรรมดา):

Invoke-Command -ComputerName (Get-Content C:\PS\host_list.txt) -
ScriptBlock{$PSVersionTable.PSVersion} | Select PSComputerName, @{N="PS Version";E={$_.Major}}

หรือคุณสามารถรับรายการคอมพิวเตอร์โดเมนผ่าน Get-ADComputer และตรวจสอบเวอร์ชัน PowerShell บนพวกเขาแบบระยะไกล:

$adcomputer=(Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -SearchBase ‘OU=servers,OU=Munich,dc=woshub,dc=com’ ).Name
Invoke-Command-ComputerName $adcomputer -Scriptblock{$PSVersionTable.psversion} -ErrorAction SilentlyContinue

หากสคริปต์ PowerShell ของคุณใช้ฟีเจอร์ของเวอร์ชัน PS เฉพาะ คุณสามารถบังคับให้สคริปต์สลับไปใช้ PowerShell เวอร์ชันอื่นได้ ตัวอย่างเช่น เพื่อรันคอนโซลในโหมด PowerShell v3 ให้รันคำสั่งนี้ (.Net Framework 3.5 ต้องติดตั้ง):

PowerShell.exe -version 3

อาจสำคัญที่จะต้องรู้เวอร์ชัน PowerShell ของคุณ หากคุณรันสคริปต์หรือคำสั่งที่ใช้ Cmdlets หรือฟีเจอร์ของเวอร์ชัน PS เฉพาะ หากคุณต้องการตรวจจับเวอร์ชัน PowerShell ที่ติดตั้งในสคริปต์และใช้ Cmdlets ตามนั้น คุณสามารถรันสคริปต์ PS ต่อไปนี้:

$ps_version = $PSVersionTable.PSVersion.major
if ( $ps_version -eq "2" )
{
write "You are using Powershell 2.0"
}
elseif ( $ps_version -eq "5" )
{
write " You are using Powershell 5"
}

ในบทความต่อไป เราจะดูวิธีอัปเดตเวอร์ชัน PowerShell ใน Windows