Trong bài viết này, chúng tôi sẽ chỉ cách cập nhật phiên bản Windows PowerShell của bạn lên 5.1 mới nhất và cài đặt (nâng cấp lên) PowerShell Core 7.1. Trong bài viết trước, chúng tôi đã nói rằng hiện có hai phiên bản PowerShell: Windows PowerShell cổ điển (phiên bản mới nhất là 5.1 và nó không còn được phát triển) và nền tảng PowerShell Core mới (phiên bản 7.1 hiện có sẵn). Mặc dù việc đánh số phiên bản PowerShell tiếp tục từ 5.1 (6.0, 6.1, 7.0, 7.1, v.v.), đây là hai nền tảng khác nhau. Vì vậy, chúng tôi sẽ chỉ cách cập nhật cả Windows PowerShell và PowerShell Core.
Nâng Cấp Lên Windows PowerShell 5.1
PowerShell 4.0 được cài đặt mặc định trên Windows Server 2012 R2 (Windows 8.1). Hãy thử cập nhật phiên bản Windows PowerShell lên 5.1 trên Windows Server 2012 R2.
Trước hết, kiểm tra phiên bản PowerShell hiện tại (chụp ảnh màn hình cho thấy PowerShell 4.0 đã được cài đặt):
$PSVersionTable.PSVersion
Để nâng cấp phiên bản PowerShell của bạn lên 5.1, hãy cài đặt Windows Management Framework 5.1, yêu cầu .NET Framework 4.5.2 (hoặc mới hơn). Đảm bảo .NET 4.5.2 hoặc cao hơn được cài đặt bằng lệnh này:
(Get-ItemProperty ‘HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full’ -Name Release).Release
Trong trường hợp của tôi, phiên bản release 378675 nghĩa là .NET Framework phiên bản 4.5.1 được cài đặt. Vì vậy, tôi phải tải xuống và cài đặt .NET Framework 4.8 mới nhất (đây là link đến bộ cài offline: https://go.microsoft.com/fwlink/?linkid=2088631 — ndp48-x86-x64-allos-enu.exe).
Cài đặt .NET 4.8 (bạn sẽ phải khởi động lại máy tính):
Nếu bạn cài đặt WMF 5.1 mà không có .NET 4.5.2, một số tính năng PowerShell sẽ không khả dụng.
Tải xuống WMF 5.1 cho Windows Server 2012 R2 — Win8.1AndW2K12R2-KB3191564-x64.msu (https://go.microsoft.com/fwlink/?linkid=839516).
Cài đặt file MSU Windows Management Framework 5.1.
Sau khi khởi động lại máy chủ, mở console PS và đảm bảo phiên bản PowerShell đã được cập nhật lên 5.1.
Nếu bạn có Windows 7 không được hỗ trợ hoặc Windows Server 2008 R2, bạn có thể nâng cấp phiên bản PowerShell từ 2.0 lên 5.1 theo cách tương tự. Trước hết, cài đặt .Net Framework 4.5.2 (hoặc mới hơn), sau đó WMF 5.1 (link tải xuống sẽ khác với Windows Server 2012 R2).
Cách Cài Đặt Hoặc Cập Nhật Lên PowerShell Core 7?
Lưu ý rằng phiên bản Windows PowerShell mới nhất được cài đặt trong Windows 10 và Windows Server 2019 là PowerShell 5.1. Microsoft bắt đầu phát triển phiên bản PowerShell Core đa nền tảng thay vào đó. Hiện tại, PowerShell Core 6.0, 6.1, 6.2, 7.0 và 7.1 có sẵn. PowerShell Core về cơ bản là một nền tảng mới được cài đặt trên máy tính cùng với Windows PowerShell. Điều này nghĩa là bạn không thể nâng cấp PowerShell 5.1 lên PowerShell Core 7.1. PowerShell 7 được cài đặt trên máy tính riêng biệt từ Windows PowerShell 5.1.
Trong PowerShell 7.1, các nhà phát triển đã thêm khả năng tương thích tối đa với Windows PowerShell. Vì vậy, bạn có thể dễ dàng chạy script PS1 và cmdlet cũ của bạn trong PowerShell Core.
Nếu bạn đã cài đặt PowerShell Core 6.0, bạn có thể cập nhật phiên bản PowerShell trên máy tính của mình lên PowerShell 7.1 Core mới nhất (hoặc bạn có thể cài đặt PowerShell Core 7.1 cùng với Windows PowerShell 5.1). Trong ví dụ này, chúng ta sẽ thử cập nhật PowerShell Core trong Windows 10 20H2. Có hai cách để nâng cấp:
- Bạn có thể tải xuống bộ cài đặt PowerShell Core MSI thủ công từ GitHub;
- Bạn có thể tải xuống và cài đặt (cập nhật) nó trực tiếp từ console PowerShell.
Các bản phát hành mới nhất của PowerShell Core có thể được cài đặt trên tất cả các phiên bản Windows bắt đầu từ Windows 7 SP1, Server 2008 R2, và mới hơn.
Nếu bạn muốn cài đặt PowerShell Core bằng gói MSI, hãy truy cập trang dự án https://github.com/PowerShell/PowerShell, tìm bản phát hành ổn định mới nhất. Tại thời điểm viết bài này, đây là bản phát hành ngày 4 tháng 3 năm 2021 của PowerShell v7.1.3. Bản phát hành Preview cao hơn của PowerShell v7.2.0 cũng có sẵn, nhưng bạn nên chờ phiên bản ổn định hơn. Mở rộng danh sách Assets và tìm gói cho phiên bản Windows của bạn (PowerShell-7.1.3-win-x64.msi hoặc PowerShell-7.1.3-win-x86.msi).
Tải file MSI và cài đặt nó.
Để cài đặt PowerShell Core từ gói MSI bằng SCCM/MDT/script ở chế độ yên lặng, bạn có thể sử dụng lệnh với các tham số sau:
msiexec.exe /package PowerShell-7.1.0-win-x86.msi /quiet ADD_EXPLORER_CONTEXT_MENU_OPENPOWERSHELL=1 ENABLE_PSREMOTING=1 REGISTER_MANIFEST=1
Bạn có thể cập nhật PowerShell ngay từ dòng lệnh PS.
Hãy cập nhật (cài đặt) phiên bản PowerShell Core mới nhất bằng lệnh:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"
Lệnh này tải xuống file phân phối PowerShell 7.1 MSI từ GitHub và sau đó bắt đầu cài đặt qua trình cài đặt MSI.
Bạn cũng có thể sử dụng các tham số cài đặt khác:
- -Destination – thay đổi thư mục cài đặt PowerShell Core mặc định
- -Preview – cài đặt phiên bản Preview PowerShell mới nhất
- -Quiet – chế độ cài đặt yên lặng
- -AddToPath – thêm đường dẫn đến thư mục cài đặt PowerShell Core vào biến môi trường
Sau khi cài đặt hoàn tất, cửa sổ PowerShell Core (pwsh.exe) xuất hiện. Kiểm tra phiên bản PowerShell ở đây để đảm bảo nó là PoSh 7.1.3.
Nếu bạn đã cài đặt trình quản lý gói WinGet, bạn có thể cài đặt hoặc cập nhật phiên bản PowerShell của bạn lên mới nhất bằng lệnh:
winget install --id=Microsoft.PowerShell -e
Hoặc, bạn có thể cài đặt một phiên bản cụ thể của PowerShell Core:
winget install --id=Microsoft.PowerShell -v "7.1.2" -e
Nếu bạn đã cài đặt trình quản lý gói Chocolatey, hãy sử dụng các lệnh:
choco install powershell -y
choco upgrade powershell -y
hoặc cho PowerShell 7.x:
choco install pwsh -y
choco install pwsh -y
Chú ý đến thư mục của các phiên bản PowerShell khác nhau:
- 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
Nếu PowerShell 6.x đã được cài đặt trên máy tính của bạn, thư mục $env:ProgramFiles\PowerShell\6 sẽ tự động bị xóa khi bạn cài đặt PowerShell 7.1.
Lưu ý rằng tên file thực thi PowerShell đã thay đổi. Trong PowerShell Core nó là c:\Program Files\PowerShell\7\pwsh.exe. Nó có biểu tượng riêng trong menu Start.
- Để chạy Windows PowerShell dựa trên .NET Framework, lệnh
powershell.exeđược sử dụng - Để chạy PowerShell Core dựa trên .NET Core, sử dụng
pwsh.exe
Điều này nghĩa là bạn có cả Windows PowerShell 5.1 và PowerShell Core 7.1 được cài đặt trên máy tính của mình.
Để tìm ra phiên bản và build của PowerShell được cài đặt trên thiết bị của bạn, bạn có thể kiểm tra phiên bản file pwsh.exe:
(Get-Command 'C:\Program Files\PowerShell\7\pwsh.exe').Version
Đây là cách bạn có thể kiểm tra phiên bản file trên máy tính từ xa:
Invoke-Command -Computername computer1 -Scriptblock {(Get-Command 'C:\Program Files\PowerShell\7\pwsh.exe').Version}
Windows PowerShell cung cấp một chế độ tương thích ngược đặc biệt cho phép bạn chạy phiên bản PowerShell cũ hơn ngay cả khi bạn đã cài đặt phiên bản mới hơn. Bạn có thể khởi động PowerShell của một phiên bản cụ thể (ví dụ 4.0) với lệnh sau:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Version 4
Cài Đặt PowerShell Core Qua Microsoft Store
Trên Windows 10, bạn có thể cài đặt hoặc cập nhật PowerShell qua Microsoft Store. Bạn có thể thủ công tìm ứng dụng PowerShell trong Store hoặc sử dụng link này. Lợi ích của phương pháp cài đặt này là ứng dụng Store sẽ theo dõi phiên bản PowerShell đã cài đặt và tự động cài đặt cập nhật ứng dụng khi chúng có sẵn.
Nhưng cũng có nhược điểm do instance PowerShell như vậy sẽ chạy trong sandbox.
Bạn có thể tải xuống file ứng dụng APPX/MSIX và cài đặt nó bằng cmdlet Add-AppxPackage (hoặc như được mô tả trong bài "Sửa chữa Microsoft Store").
Triển Khai PowerShell Core Với Group Policy
Trong miền Active Directory, bạn có thể triển khai và cập nhật PowerShell Core tập trung bằng Group Policy. Sử dụng tính năng cài đặt gói MSI của GPO.
- Tải xuống file cài đặt PowerShell MSI và sao chép nó vào thư mục SYSVOL trên bộ điều khiển miền;
- Mở Domain Group Policy Management Console (
gpmc.msc), tạo GPO mới và liên kết nó với OU chứa máy tính và máy chủ; - Đi đến phần GPO Computer Configuration -> Software Settings, tạo gói mới, và chỉ định đường dẫn đến file cài đặt PowerShell MSI trong thư mục SYSVOL trong miền (sử dụng đường dẫn UNC);
- Để cập nhật cài đặt Group Policy cài đặt phần mềm, bạn cần khởi động lại máy tính. Phiên bản mới của PowerShell sẽ được cài đặt trên tất cả máy tính khi khởi động.
Bạn có thể sử dụng bộ lọc WMI GPO để nhắm mục tiêu chính sách chính xác hơn đến thiết bị miền.
Cập Nhật PowerShell Từ Xa
Bạn có thể sử dụng một trong các phương pháp sau để cập nhật PowerShell trên máy tính từ xa qua dấu nhắc lệnh.
Phương pháp đầu tiên cho phép bạn cập nhật PowerShell từ xa trên máy tính bằng trình cài đặt MSI trong thư mục chia sẻ mạng:
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}
Script sau sẽ chọn tất cả máy tính Windows 10 hoạt động từ miền Active Directory và bắt đầu tải xuống và cài đặt PowerShell Core trên từng máy:
Để sử dụng cmdlet GetADComputer, module PowerShell Active Directory phải được cài đặt trên thiết bị của bạn.
$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"}
}
Hãy cẩn thận khi sử dụng lệnh PowerShell Remoting khi kết nối với máy tính từ xa (với cmdlet Enter-PSSession và Invoke-Command). Nếu bạn cần kết nối đến endpoint PowerShell 7.1, bạn cần sử dụng lệnh:
Enter-PSSession -ComputerName dc01 -ConfigurationName "powershell.7.1.3"
Ngoài ra, bạn sẽ kết nối đến endpoint PowerShell Remoting 5.1.