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 หมายเหตุ
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 แบบคลาสสิก (เฉพาะการแก้ไขจุดบกพร่องและการอัปเดตความปลอดภัยเท่านั้นที่จะได้รับการเผยแพร่) และมุ่งเน้นไปที่โอเพ่นซอร์สข้ามแพลตฟอร์ม 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 คือ ข้ามแพลตฟอร์ม และสามารถทำงานใน Linux ได้เช่นกัน
  3. PowerShell Core ไม่สอดคล้องกับ Windows PowerShell อย่างสมบูรณ์ อย่างไรก็ตาม Microsoft กำลังทำงานเพื่อปรับปรุงความเข้ากันได้แบบย้อนหลังกับ PS 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

ตรวจสอบค่าคุณสมบัติเวอร์ชัน

ภาพหน้าจอต่อไปนี้สร้างขึ้นใน 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 ที่ติดตั้งได้ผ่านทางรีจิสทรี ในการดำเนินการ ให้รับค่าของพารามิเตอร์ PowerShellVersion ในรีจิสตรีคีย์ 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 คุณสามารถรับค่าพารามิเตอร์รีจิสตรีในคีย์ reg อื่นได้:

(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 ตัวแปรสภาพแวดล้อมหรือรับข้อมูลจากรีจิสทรีโดยตรง วิธีอื่นอาจส่งคืนข้อมูลที่ไม่ถูกต้อง

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

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