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

การอัปเดตเวอร์ชัน PowerShell บน Windows

ในบทความนี้ เราจะแสดงวิธีอัปเดตเวอร์ชัน Windows PowerShell ของคุณเป็นเวอร์ชันล่าสุด 5.1 และติดตั้ง (อัปเกรดเป็น) PowerShell Core 7.1 ในบทความก่อนหน้า เราได้บอกว่าปัจจุบันมี PowerShell สองเวอร์ชัน: Windows PowerShell แบบคลาสสิก (เวอร์ชันล่าสุดคือ 5.1 และไม่ได้รับการพัฒนาต่อ) และแพลตฟอร์ม PowerShell Core ใหม่ (เวอร์ชัน 7.1 พร้อมใช้งานตอนนี้) 儘管การ編號เวอร์ชัน PowerShell ดำเนินต่อจาก 5.1 (6.0, 6.1, 7.0, 7.1 ฯลฯ) นี่คือสองแพลตฟอร์มที่แตกต่างกัน ดังนั้น เราจะแสดงวิธีอัปเดตทั้ง Windows PowerShell และ PowerShell Core

การอัปเกรดเป็น Windows PowerShell 5.1

PowerShell 4.0 ติดตั้งโดยค่าเริ่มต้นบน Windows Server 2012 R2 (Windows 8.1) มาลองอัปเดตเวอร์ชัน Windows PowerShell เป็น 5.1 บน Windows Server 2012 R2

ขั้นแรก ตรวจสอบเวอร์ชัน PowerShell ปัจจุบัน (ภาพหน้าจอแสดงว่าติดตั้ง PowerShell 4.0):

$PSVersionTable.PSVersion

เพื่ออัปเกรดเวอร์ชัน PowerShell ของคุณเป็น 5.1 ให้ติดตั้ง Windows Management Framework 5.1 ซึ่งต้องการ .NET Framework 4.5.2 (หรือใหม่กว่า) ตรวจสอบให้แน่ใจว่า .NET 4.5.2 หรือสูงกว่าถูกติดตั้งโดยใช้คำสั่งนี้:

(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release).Release

ในกรณีของฉัน Release Version 378675 หมายความว่า .NET Framework Version 4.5.1 ติดตั้งอยู่ ดังนั้นฉันต้องดาวน์โหลดและติดตั้ง .NET Framework 4.8 ล่าสุด (ลิงก์ Offline Installer: https://go.microsoft.com/fwlink/?linkid=2088631 — ndp48-x86-x64-allos-enu.exe)

ติดตั้ง .NET 4.8 (คุณจะต้องรีบูทคอมพิวเตอร์):

⚠ หมายเหตุ: หากคุณติดตั้ง WMF 5.1 โดยไม่มี .NET 4.5.2 ฟีเจอร์ PowerShell บางอย่างจะไม่พร้อมใช้งาน

ดาวน์โหลด WMF 5.1 สำหรับ Windows Server 2012 R2 — Win8.1AndW2K12R2-KB3191564-x64.msu (https://go.microsoft.com/fwlink/?linkid=839516)

ติดตั้งไฟล์ MSU ของ Windows Management Framework 5.1

หลังจากรีสตาร์ทเซิร์ฟเวอร์ ให้เปิดคอนโซล PS และตรวจสอบว่าเวอร์ชัน PowerShell ได้รับการอัปเดตเป็น 5.1 แล้ว

หากคุณมี Windows 7 หรือ Windows Server 2008 R2 ที่ไม่ได้รับการสนับสนุนแล้ว คุณสามารถอัปเกรดเวอร์ชัน PowerShell จาก 2.0 เป็น 5.1 ด้วยวิธีเดียวกัน ขั้นแรก ติดตั้ง .Net Framework 4.5.2 (หรือใหม่กว่า) แล้ว WMF 5.1 (ลิงก์ดาวน์โหลดจะแตกต่างจาก Windows Server 2012 R2)

วิธีติดตั้งหรืออัปเดตเป็น PowerShell Core 7

โปรดทราบว่า Windows PowerShell เวอร์ชันล่าสุดที่ติดตั้งใน Windows 10 และ Windows Server 2019 คือ PowerShell 5.1 Microsoft เริ่มพัฒนา PowerShell Core แบบ Cross-platform แทน ปัจจุบัน PowerShell Core 6.0, 6.1, 6.2, 7.0 และ 7.1 พร้อมใช้งาน PowerShell Core โดยปริยายคือแพลตฟอร์มใหม่ที่ติดตั้งบนคอมพิวเตอร์พร้อมกับ Windows PowerShell หมายความว่าคุณ ไม่สามารถ อัปเกรด PowerShell 5.1 เป็น PowerShell Core 7.1 ได้ PowerShell 7 ถูกติดตั้งบนคอมพิวเตอร์แยกต่างหากจาก Windows PowerShell 5.1

💡 ข้อดี: ใน PowerShell 7.1 นักพัฒนาเพิ่มความเข้ากันได้สูงสุดกับ Windows PowerShell ดังนั้น คุณสามารถรันสคริปต์ PS1 และ Cmdlet เก่าของคุณใน PowerShell Core ได้อย่างง่ายดาย

หากคุณมี PowerShell Core 6.0 ติดตั้งอยู่ คุณสามารถอัปเดตเวอร์ชัน PowerShell บนคอมพิวเตอร์ของคุณเป็น PowerShell 7.1 Core ล่าสุด (หรือคุณสามารถติดตั้ง PowerShell Core 7.1 พร้อมกับ Windows PowerShell 5.1) ในตัวอย่างนี้ เราจะลองอัปเดต PowerShell Core ใน Windows 10 20H2 มีสองวิธีในการอัปเกรด:

  • คุณสามารถดาวน์โหลด PowerShell Core MSI Installer ด้วยตนเองจาก GitHub;
  • คุณสามารถดาวน์โหลดและติดตั้ง (อัปเดต) ได้โดยตรงจากคอนโซล PowerShell
💡 รองรับ: เวอร์ชันล่าสุดของ PowerShell Core สามารถติดตั้งบน Windows ทุกเวอร์ชันตั้งแต่ Windows 7 SP1, Server 2008 R2 และใหม่กว่า

วิธีที่ 1: ติดตั้งผ่าน MSI Package

หากคุณต้องการติดตั้ง PowerShell Core โดยใช้แพ็กเกจ MSI ไปที่หน้าโครงการ https://github.com/PowerShell/PowerShell หา Latest Stable Release ณ ขณะเขียนบทความนี้เป็น Release วันที่ 4 มีนาคม 2021 ของ PowerShell v7.1.3 Preview Release สูงกว่าของ PowerShell v7.2.0 ก็พร้อมใช้งาน แต่คุณควรรอเวอร์ชันที่เสถียรขึ้น ขยายรายการ Assets และหาแพ็กเกจสำหรับเวอร์ชัน Windows ของคุณ (PowerShell-7.1.3-win-x64.msi หรือ PowerShell-7.1.3-win-x86.msi)

ดาวน์โหลดไฟล์ MSI และติดตั้ง

เพื่อติดตั้ง PowerShell Core จากแพ็กเกจ MSI โดยใช้ SCCM/MDT/สคริปต์ในโหมด Quiet คุณสามารถใช้คำสั่งพร้อมพารามิเตอร์ต่อไปนี้:

msiexec.exe /package PowerShell-7.1.0-win-x86.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1

วิธีที่ 2: อัปเดต PowerShell จาก CLI ของ PS

ลองอัปเดต (ติดตั้ง) เวอร์ชัน PowerShell Core ล่าสุดโดยใช้คำสั่ง:

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"

คำสั่งนี้ดาวน์โหลดไฟล์การกระจาย PowerShell 7.1 MSI จาก GitHub และเริ่มการติดตั้งผ่าน MSI Installer

คุณยังสามารถใช้พารามิเตอร์การติดตั้งอื่นๆ ได้:

  • -Destination – เปลี่ยนโฟลเดอร์ติดตั้ง PowerShell Core เริ่มต้น
  • -Preview – ติดตั้งเวอร์ชัน Preview PowerShell ล่าสุด
  • -Quiet – โหมดติดตั้งเงียบ
  • -AddToPath – เพิ่มเส้นทางไปยังไดเรกทอรีติดตั้ง PowerShell Core ใน Environment Variables

หากคุณมี WinGet Package Manager ติดตั้ง คุณสามารถติดตั้งหรืออัปเดตเวอร์ชัน PowerShell ของคุณเป็นเวอร์ชันล่าสุดด้วยคำสั่ง:

winget install --id=Microsoft.PowerShell -e

หรือ คุณสามารถติดตั้งเวอร์ชันเฉพาะของ PowerShell Core ได้:

winget install --id=Microsoft.PowerShell -v "7.1.2" -e

หากคุณมี Chocolatey Package Manager ติดตั้ง ใช้คำสั่ง:

choco install powershell -y
choco upgrade powershell -y
# หรือสำหรับ PowerShell 7.x:
choco install pwsh -y
choco upgrade pwsh -y

ไดเรกทอรีของ PowerShell เวอร์ชันต่างๆ

  • Windows PowerShell 5.1: $env:WINDIR\System32\WindowsPowerShell\v1.0
  • PowerShell Core 6.x: $env:ProgramFiles\PowerShell\6
  • PowerShell Core 7.x: $env:ProgramFiles\PowerShell\7
💡 หมายเหตุ: หาก PowerShell 6.x ติดตั้งอยู่บนคอมพิวเตอร์ของคุณ ไดเรกทอรี $env:ProgramFiles\PowerShell\6 จะถูกลบโดยอัตโนมัติเมื่อคุณติดตั้ง PowerShell 7.1

โปรดสังเกตว่าชื่อไฟล์ Executable ของ PowerShell เปลี่ยนไป ใน PowerShell Core คือ c:\Program Files\PowerShell\7\pwsh.exe มันมีไอคอนของตัวเองในเมนู Start

  • เพื่อรัน Windows PowerShell ที่อิง .NET Framework ใช้คำสั่ง powershell.exe
  • เพื่อรัน PowerShell Core ที่อิง .NET Core ใช้คำสั่ง pwsh.exe

นี่หมายความว่าคุณมี Windows PowerShell 5.1 และ PowerShell Core 7.1 ติดตั้งบนคอมพิวเตอร์ของคุณพร้อมกัน

เพื่อค้นหาเวอร์ชันและ Build ของ PowerShell ที่ติดตั้งบนอุปกรณ์ของคุณ คุณสามารถตรวจสอบเวอร์ชันของไฟล์ pwsh.exe:

(Get-Command 'C:\Program Files\PowerShell\7\pwsh.exe').Version

นี่คือวิธีคุณสามารถตรวจสอบเวอร์ชันของไฟล์บนคอมพิวเตอร์ระยะไกล:

Invoke-Command -Computername computer1 -Scriptblock {(Get-Command 'C:\Program Files\PowerShell\7\pwsh.exe').Version}

Backward Compatibility Mode

Windows PowerShell มีโหมด Backward Compatibility พิเศษที่ช่วยให้คุณรันเวอร์ชัน PowerShell เก่าได้แม้คุณจะมีเวอร์ชันใหม่กว่าติดตั้งอยู่ คุณสามารถเริ่ม PowerShell เวอร์ชันเฉพาะ (เช่น 4.0) ด้วยคำสั่งต่อไปนี้:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 4

การติดตั้ง PowerShell Core ผ่าน Microsoft Store

บน Windows 10 คุณสามารถติดตั้งหรืออัปเดต PowerShell ผ่าน Microsoft Store คุณสามารถค้นหาแอป PowerShell ใน Store ด้วยตนเองหรือใช้ลิงก์นี้ ข้อดีของวิธีการติดตั้งนี้คือแอป Store จะติดตามเวอร์ชัน PowerShell ที่ติดตั้งและติดตั้งอัปเดตแอปโดยอัตโนมัติเมื่อมีการพร้อมใช้งาน

แต่ก็มีข้อเสียจากการที่อินสแตนซ์ PowerShell แบบนี้จะรันใน Sandbox

คุณสามารถดาวน์โหลดไฟล์แอปพลิเคชัน APPX/MSIX และติดตั้งโดยใช้ Cmdlet Add-AppxPackage (หรือตามที่อธิบายในบทความ "Repairing Microsoft Store")

การปรับใช้ PowerShell Core ด้วย Group Policy

ในโดเมน Active Directory คุณสามารถปรับใช้และอัปเดต PowerShell Core แบบรวมศูนย์โดยใช้ Group Policy ใช้ฟีเจอร์ของ GPO ในการติดตั้งแพ็กเกจ MSI

  1. ดาวน์โหลดไฟล์ติดตั้ง PowerShell MSI และคัดลอกไปยังไดเรกทอรี SYSVOL บน Domain Controller;
  2. เปิดคอนโซล Domain Group Policy Management (gpmc.msc) สร้าง GPO ใหม่และเชื่อมโยงกับ OU ที่มีคอมพิวเตอร์และเซิร์ฟเวอร์;
  3. ไปที่ส่วน GPO Computer Configuration -> Software Settings สร้างแพ็กเกจใหม่ และระบุเส้นทางไปยังไฟล์ติดตั้ง PowerShell MSI ในโฟลเดอร์ SYSVOL ในโดเมน (ใช้เส้นทาง UNC);
  4. เพื่ออัปเดตการตั้งค่า Group Policy การติดตั้งซอฟต์แวร์ คุณต้องรีสตาร์ทคอมพิวเตอร์ เวอร์ชันใหม่ของ PowerShell จะถูกติดตั้งบนคอมพิวเตอร์ทั้งหมดเมื่อเริ่มต้น
💡 เคล็ดลับ: คุณสามารถใช้ GPO WMI Filters เพื่อกำหนดเป้าหมายนโยบายไปยังอุปกรณ์โดเมนได้อย่างแม่นยำมากขึ้น

การอัปเดต PowerShell แบบระยะไกล

คุณสามารถใช้หนึ่งในวิธีต่อไปนี้เพื่ออัปเดต PowerShell บนคอมพิวเตอร์ระยะไกลผ่าน Command Prompt

วิธีแรก อนุญาตให้คุณอัปเดต PowerShell บนคอมพิวเตอร์ระยะไกลโดยใช้ MSI Installer ในโฟลเดอร์เครือข่ายที่แชร์:

Invoke-Command -ComputerName mun-srv01 -ScriptBlock {Start-Process msiexec.exe -ArgumentList '/package "\\mun-fs01\install\PowerShell-7.1.3-win-x64.msi" /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1' -Wait}

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

$ADComputers = Get-ADComputer -Filter 'operatingsystem -like "*Windows 10*" -and enabled -eq "true"'
ForEach ($computer in $ADcomputers) {
 Invoke-Command -ComputerName $computer {iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Quiet"}
}
⚠ หมายเหตุ: เพื่อใช้ Cmdlet GetADComputer โมดูล PowerShell ของ Active Directory ต้องติดตั้งบนอุปกรณ์ของคุณ
⚠ ข้อควรระวัง: ให้ระมัดระวังเมื่อใช้คำสั่ง PowerShell Remoting เมื่อเชื่อมต่อกับคอมพิวเตอร์ระยะไกล (ด้วย Cmdlet Enter-PSSession และ Invoke-Command) หากคุณต้องการเชื่อมต่อกับ PowerShell 7.1 Endpoint คุณต้องใช้คำสั่ง: Enter-PSSession -ComputerName dc01 -ConfigurationName "powershell.7.1.3" มิฉะนั้น คุณจะเชื่อมต่อกับ PowerShell Remoting 5.1 Endpoint