Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Làm thế nào để Kiểm tra Phiên bản PowerShell đã được Cài đặt?

Trong bài viết này, chúng ta sẽ tìm hiểu những phiên bản PowerShell tồn tại, sự khác biệt giữa Windows PowerShellPowerShell Core và cách kiểm tra phiên bản PowerShell được cài đặt trên máy tính cục bộ hoặc từ xa.

Lịch sử và các phiên bản của Windows PowerShell và PowerShell Core

PowerShell được cài đặt theo mặc định trong tất cả các phiên bản Windows bắt đầu từ Windows 7 SP1 và Windows Server 2008 R2 SP1. Bảng sau đây hiển thị danh sách tất cả các phiên bản PowerShell:

Phiên bản PS Lưu ý
PowerShell 1.0 Có thể được cài đặt thủ công trên Windows Server 2003 SP1 và Windows XP
PowerShell 2.0 Windows Server 2008 R2 và Windows 7
PowerShell 3.0 Windows 8 và Windows Server 2012
PowerShell 4.0 Windows 8.1 và Windows Server 2012 R2
PowerShell 5.0 Được cài đặt sẵn trên Windows 10 RTM và tự động cập nhật lên 5.1 thông qua Windows Update
PowerShell 5.1 Nó được tích hợp vào Windows 10 (bắt đầu từ Bản dựng 1709) và Windows Server 2016
PowerShell Core 6.0 và 6.1 Đây là phiên bản PowerShell đa nền tảng tiếp theo (dựa trên .NET Core) có thể được cài đặt trên tất cả các phiên bản Windows được hỗ trợ và trên MacOS, CentOS, RHEL, Debian, Ubuntu, openSUSE
PowerShell Core 7.0 Đây là phiên bản PowerShell mới nhất được phát hành vào tháng 3 năm 2020 (.NET Core 3.1 được sử dụng trong đó thay vì .NET Core 2.x)
Bạn có thể cài đặt thủ công phiên bản PowerShell mới hơn trong các phiên bản Windows trước. Để thực hiện, hãy tải xuống và cài đặt phiên bản thích hợp của Khung quản lý Windows (PowerShell là một phần của nó).

Cần lưu ý rằng trong 2 năm qua Microsoft đã tạm ngừng phát triển Windows PowerShell cổ điển (chỉ phát hành các bản sửa lỗi và cập nhật bảo mật) và tập trung vào đa nền tảng mã nguồn mở PowerShell Core .

Sự khác biệt giữa Windows PowerShell và PowerShell Core là gì?

  1. Windows PowerShell dựa trên .NET Framework (ví dụ:PowerShell 5 yêu cầu .NET Framework v4.5, hãy đảm bảo rằng nó đã được cài đặt). Lõi PowerShell dựa trên .Net Core ;
  2. Windows PowerShell chỉ hoạt động trong hệ điều hành Windows, trong khi PowerShell Core đa nền tảng và có thể hoạt động trong cả Linux;
  3. PowerShell Core không hoàn toàn tương thích với Windows PowerShell, tuy nhiên, Microsoft đang nỗ lực cải thiện khả năng tương thích ngược với các lệnh ghép ngắn và tập lệnh PS trước đó. (bạn nên kiểm tra các tập lệnh PS1 cũ của mình trước khi chuyển sang PowerShell Core). PowerShell Core 7 cung cấp khả năng tương thích cao nhất với Windows PowerShell;
  4. Bạn không thể sử dụng PowerShell ISE Editor để chỉnh sửa tập lệnh PowerShell Core (nhưng có thể sử dụng Visual Studio Code);
  5. Vì Windows PowerShell không còn được phát triển, bạn nên bắt đầu chuyển sang PowerShell Core.

Cách tải phiên bản PowerShell từ Bảng điều khiển?

Cách dễ nhất để tìm ra phiên bản PowerShell nào được cài đặt trên máy tính của bạn là sử dụng lệnh:

host

Kiểm tra giá trị thuộc tính Phiên bản.

Ảnh chụp màn hình sau được tạo trong Windows 10 có PowerShell 5.1 được cài đặt theo mặc định, giống như trong Windows Server 2016.

Làm thế nào để Kiểm tra Phiên bản PowerShell đã được Cài đặt?

hoặc

$PSVersionTable

Bạn chỉ có thể nhận giá trị phiên bản PowerShell:

$PSVersionTable.PSVersion.major

(trong ví dụ này, chúng tôi có PSVersion 2.0 trong Windows Server 2008 R2 sạch sẽ)

Làm thế nào để Kiểm tra Phiên bản PowerShell đã được Cài đặt?

Lệnh $ PSVersionTable hoạt động chính xác trong PowerShell Core ở các hệ điều hành khác nhau.

Bạn cũng có thể tìm ra phiên bản PowerShell đã cài đặt thông qua sổ đăng ký. Để thực hiện, hãy lấy giá trị của tham số PowerShellVersion trong khóa đăng ký HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine sử dụng lệnh ghép ngắn Get-ItemProperty:

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

Làm thế nào để Kiểm tra Phiên bản PowerShell đã được Cài đặt?

Phương pháp được mô tả ở trên hoạt động trên Windows Server 2012 / Windows 8 hoặc mới hơn.

Trong Windows Server 2008 R2 / Windows 7, bạn có thể lấy giá trị của tham số đăng ký trong một khóa đăng ký khác:

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

Làm thế nào để Kiểm tra Phiên bản PowerShell đã được Cài đặt?

Để tải phiên bản PowerShell Core đã cài đặt, hãy sử dụng lệnh sau:

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

Kiểm tra phiên bản PowerShell trên Máy tính Từ xa

Để kiểm tra phiên bản PowerShell trên máy chủ từ xa, hãy sử dụng giá trị của $ PSVersionTable biến môi trường hoặc lấy thông tin trực tiếp từ sổ đăng ký. Các phương pháp khác có thể trả về dữ liệu không chính xác.

Bạn có thể cài đặt phiên bản PowerShell trên máy tính từ xa thông qua PowerShell Remoting sử dụng Lệnh gọi lệnh ghép ngắn:

Invoke-Command -ComputerName mun-dc01 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred
Làm thế nào để Kiểm tra Phiên bản PowerShell đã được Cài đặt?

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

Bạn có thể tải các phiên bản PowerShell đã cài đặt trên nhiều máy tính bằng cách sử dụng tập lệnh sau (danh sách các máy tính từ xa phải được chỉ định dưới dạng tệp văn bản thuần túy):

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

Hoặc bạn có thể lấy danh sách các máy tính miền qua Get-ADComputer và kiểm tra từ xa các phiên bản PowerShell trên chúng:

$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

Nếu tập lệnh PowerShell của bạn sử dụng các tính năng của phiên bản PS cụ thể, bạn có thể buộc tập lệnh của mình chuyển sang phiên bản PowerShell khác. Ví dụ:để chạy bảng điều khiển ở chế độ PowerShell v3, hãy chạy lệnh này (phải cài đặt .Net Framework 3.5):

PowerShell.exe -version 3

Có thể cần biết phiên bản PowerShell của bạn nếu bạn chạy các tập lệnh hoặc lệnh sử dụng lệnh ghép ngắn hoặc các tính năng của một phiên bản PS cụ thể. Nếu bạn muốn phát hiện phiên bản PowerShell đã cài đặt trong tập lệnh và sử dụng lệnh ghép ngắn dựa trên nó, bạn có thể chạy tập lệnh PS sau:

$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"
}

Trong bài viết tiếp theo, chúng ta sẽ xem xét cách cập nhật phiên bản PowerShell trong Windows.