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 Core 7 ได้อย่างไร
  • การติดตั้ง PowerShell Core ผ่าน Microsoft Store
  • ปรับใช้ PowerShell Core ด้วยนโยบายกลุ่ม
  • กำลังอัปเดต PowerShell จากระยะไกล

กำลังอัปเกรดเป็น 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 บน Windows

หากต้องการอัปเกรด 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

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

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

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

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

หากคุณติดตั้ง 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)

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

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

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

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

หากคุณมี 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 เวอร์ชันข้ามแพลตฟอร์มแทน ปัจจุบัน 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 และ cmdlets เก่าของคุณใน 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 ได้ด้วยตนเองจาก GitHub
  • คุณสามารถดาวน์โหลดและติดตั้ง (อัปเดต) ได้โดยตรงจากคอนโซล PowerShell
PowerShell Core รุ่นล่าสุดสามารถติดตั้งได้กับ Windows ทุกรุ่นโดยเริ่มตั้งแต่ Windows 7 SP1, Server 2008 R2 และใหม่กว่า

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

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

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

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

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

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

คุณสามารถอัปเดต PowerShell ได้จาก PS cli

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

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

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

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

  • -ปลายทาง – เปลี่ยนโฟลเดอร์การติดตั้ง PowerShell Core เริ่มต้น
  • -ดูตัวอย่าง – ติดตั้ง Preview PowerShell เวอร์ชันล่าสุด
  • -เงียบ – โหมดการติดตั้งแบบเงียบ
  • -AddToPath – เพิ่มพาธไปยังไดเร็กทอรีการติดตั้ง PowerShell Core ไปยังตัวแปรสภาพแวดล้อม

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

หลังจากการติดตั้งเสร็จสิ้น หน้าต่าง PowerShell Core (pwsh.exe) จะปรากฏขึ้น ตรวจสอบเวอร์ชันของ PowerShell ที่นี่เพื่อให้แน่ใจว่าเป็น PoSh 7.1.3

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

หากคุณติดตั้ง 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 install 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

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

  • ในการเรียกใช้ Windows PowerShell ที่ใช้ .NET Framework powershell.exe ใช้คำสั่ง
  • ในการรัน .NET Core-based PowerShell Core ให้ใช้ pwsh.exe

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

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

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

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

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

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

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

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

Windows PowerShell มีโหมดความเข้ากันได้แบบย้อนหลังพิเศษที่ช่วยให้คุณเรียกใช้ 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 ดังกล่าวจะทำงานในแซนด์บ็อกซ์

กำลังอัปเดตเวอร์ชัน PowerShell บน Windows

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

กำลังปรับใช้ PowerShell Core ด้วยนโยบายกลุ่ม

ในโดเมน Active Directory คุณสามารถปรับใช้และอัปเดต PowerShell Core จากส่วนกลางได้โดยใช้นโยบายกลุ่ม ใช้คุณสมบัติของ GPO เพื่อติดตั้งแพ็คเกจ MSI

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

กำลังอัปเดต PowerShell จากระยะไกล

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

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

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 ในแต่ละเครื่อง:

เมื่อต้องการใช้ GetADComputer cmdlet ต้องติดตั้งโมดูล Active Directory PowerShell บนอุปกรณ์ของคุณ
$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"}
}

โปรดใช้ความระมัดระวังเมื่อใช้คำสั่ง PowerShell Remoting เมื่อเชื่อมต่อกับคอมพิวเตอร์ระยะไกล (ด้วย Enter-PSSession และ Invoke-Command cmdlet) หากคุณต้องการเชื่อมต่อกับปลายทาง PowerShell 7.1 คุณต้องใช้คำสั่ง:

Enter-PSSession -ComputerName dc01 -ConfigurationName "powershell.7.1.3"

มิฉะนั้น คุณจะเชื่อมต่อกับปลายทาง PowerShell Remoting 5.1