power shell 查询版本 方法大全

在PowerShell中查看版本信息可以通过多种方式实现。以下是几种常用的方法来查看你当前使用的PowerShell版本:

方法1: $PSVersionTable 变量

这是检查PowerShell版本最简单和最常用的方法。只需在PowerShell窗口中输入以下命令:

powershellCopy Code
$PSVersionTable.PSVersion

PS C:\Users\Administrator> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      20348  2400

  • Major(主要版本):一般对应于软件的重大更新或功能改进。当主要版本号增加时,通常表示软件经历了重大的变化或添加了重要的功能。
  • Minor(次要版本):一般对应于软件的小的改进或修复。次要版本号的增加通常意味着在主要版本的基础上进行了一些改进,但并没有引入重大的变化。
  • Build(构建版本):构建版本号通常用于标识软件的特定构建或版本。它可能包含了一系列的编译、打包或发布过程中的更改。
  • Revision(修订版本):修订版本号通常用于标识软件的小的修复或调整。它通常在次要版本的基础上进行,用于指示软件的微小更新或修正。

此命令会显示当前PowerShell会话的主要版本信息,包括主版本号、次版本号、修补程序版本号和预览版标志(如果有的话)。

方法2: Get-Host 命令

另一种获取PowerShell版本的方法是使用Get-Host或其别名gh。运行以下命令:

powershellCopy Code
Get-Host | Select-Object Version

PS C:\Users\Administrator> Get-Host | Select-Object Version

Version
-------
5.1.20348.2400

或者使用别名

powershellCopy Code
gh | Select-Object Version

这将返回一个对象,其中包含当前PowerShell主机的版本信息。

别名来源:PowerShell 的简称命令是由 Alias 提供的,这些别名为常用的 PowerShell 命令提供了更简洁的替代方式。你可以使用以下命令来查看当前系统中定义的所有别名 - suv789 - 博客园 (cnblogs.com)

方法3: $PSVersionTable 变量的详细输出

如果你想获得关于当前PowerShell环境更详细的信息,可以直接查看$PSVersionTable变量的全部内容而不仅仅是.PSVersion属性。这将包括CLR版本、构建版本、PS兼容版本等信息。

powershellCopy Code
$PSVersionTable

这个命令会展示一个表格,列出了所有相关的版本信息,包括PowerShell引擎版本、CLR版本以及其他组件的版本信息。

PS C:\Users\Administrator> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.20348.2400
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.20348.2400
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

  • 名称                                                     值
  • -------------------------------------------------------------------
  • PSVersion(PowerShell 版本): 5.1.20348.2400
  • PSEdition(PowerShell 版本类型): 桌面版
  • PSCompatibleVersions(兼容的 PowerShell 版本): {1.0, 2.0, 3.0, 4.0...}
  • BuildVersion(构建版本): 10.0.20348.2400
  • CLRVersion(公共语言运行时版本): 4.0.30319.42000
  • WSManStackVersion(WSMan 协议堆栈版本): 3.0
  • PSRemotingProtocolVersion(远程管理协议版本): 2.3
  • SerializationVersion(序列化版本): 1.1.0.1

 

这段输出展示了$PSVersionTable命令在PowerShell中的执行结果,以下是每个字段的功能说明:

  • PSVersion: 显示当前PowerShell的主版本号。在这个例子中,版本号为5.1.20348.2227,表明这是Windows PowerShell 5.1的一个特定构建版本。

  • PSEdition: 描述PowerShell的版本类型。在这个例子中,值为“Desktop”,表示这是适用于桌面操作系统(如Windows 10)的Windows PowerShell版本。

  • PSCompatibleVersions: 列出了与当前PowerShell版本兼容的早期PowerShell版本号。这意味着当前环境支持运行为这些版本编写的脚本和模块。在此例中,它列出了从1.0到更高版本。

  • BuildVersion: 显示当前PowerShell构建的具体版本号。这个信息有助于识别特定的修补程序或更新。在这个例子中,构建版本号为10.0.20348.2227。

  • CLRVersion: 表示公共语言运行时(Common Language Runtime, CLR)的版本,这是.NET Framework的一部分,PowerShell基于它运行。在这个例子中,CLR版本为4.0.30319.42000,指的是.NET Framework 4的一个版本。

  • WSManStackVersion: 显示Windows远程管理(WS-Management)协议栈的版本。这是PowerShell远程管理功能所依赖的技术。在这个例子中,版本为3.0。

  • PSRemotingProtocolVersion: 显示PowerShell远程协议的版本。这个版本号有助于确定使用的PowerShell远程通信协议的兼容性。在这个例子中,版本为2.3。

  • SerializationVersion: 表示PowerShell对象序列化的版本。序列化是将对象状态转换为可存储或可传输的形式的过程,在远程通信和作业中尤其重要。在这个例子中,序列化版本为1.1.0.1。

 

在PowerShell中,查询版本信息主要依赖于几个关键的命令和变量。这些工具提供了不同层面上的版本信息,包括PowerShell本身的版本、.NET Framework或.NET Core的版本,以及操作系统的版本信息。以下是一些用于查询PowerShell版本信息的主要方法:

1. $PSVersionTable 变量

这是查询PowerShell版本最直接的方法。$PSVersionTable提供了一个包含多个属性的哈希表,其中PSVersion属性就是PowerShell的版本号。

powershellCopy Code
$PSVersionTable.PSVersion

2. Get-Host 或其别名 gh

Get-Host命令(或其简写形式gh)也可以用来获取当前PowerShell会话的宿主信息,包括版本号。

powershellCopy Code
Get-Host | Select-Object Version

3. 查看全部$PSVersionTable

如果你想获取更全面的版本信息,包括CLR版本、构建版本等,可以直接输出$PSVersionTable的全部内容。

powershellCopy Code
$PSVersionTable

4. 使用[Environment]::Version查询.NET版本

虽然这不直接反映PowerShell的版本,但了解当前PowerShell环境运行在哪个版本的.NET上也是很重要的。这对于理解某些功能的可用性尤其关键。

powershellCopy Code
[Environment]::Version

总结

基于上述方法,实际上有两个主要的命令/变量用于直接查询PowerShell的版本信息:$PSVersionTableGet-Host$PSVersionTable是最常用且推荐的方式,因为它提供了最全面的信息。其他方法如[Environment]::Version提供了关于底层.NET环境的信息,这虽然与PowerShell的版本不完全相同,但对于开发和调试脚本也非常有用。

查看安装的模块版本

如果你想了解特定PowerShell模块的版本,可以使用Get-Module命令配合-ListAvailable参数。这对于排查模块兼容性问题很有帮助。

powershellCopy Code
Get-Module -ListAvailable | Select-Object Name,Version

PS C:\Users\Administrator> Get-Module -ListAvailable | Select-Object Name,Version

Name                                      Version
----                                      -------
Microsoft.PowerShell.Operation.Validation 1.0.1
PackageManagement                         1.0.0.1
Pester                                    3.4.0
PowerShellGet                             1.0.0.1
PSReadline                                2.0.0
AppBackgroundTask                         1.0.0.0
AppLocker                                 2.0.0.0
AppvClient                                1.0.0.0
Appx                                      2.0.1.0
BestPractices                             1.0
BitsTransfer                              2.0.0.0
BranchCache                               1.0.0.0
CimCmdlets                                1.0.0.0
ConfigCI                                  1.0
ConfigDefender                            1.0
ConfigDefenderPerformance                 1.0
Defender                                  1.0
DeliveryOptimization                      1.0.3.0
DirectAccessClientComponents              1.0.0.0
Dism                                      3.0
DnsClient                                 1.0.0.0
EventTracingManagement                    1.0.0.0
Get-NetView                               2020.6.1.82
International                             2.0.0.0
iSCSI                                     1.0.0.0
IscsiTarget                               2.0.0.0
ISE                                       1.0.0.0
Kds                                       1.0.0.0
LAPS                                      1.0.0.0
Microsoft.PowerShell.Archive              1.0.1.0
Microsoft.PowerShell.Diagnostics          3.0.0.0
Microsoft.PowerShell.Host                 3.0.0.0
Microsoft.PowerShell.LocalAccounts        1.0.0.0
Microsoft.PowerShell.Management           3.1.0.0
Microsoft.PowerShell.ODataUtils           1.0
Microsoft.PowerShell.Security             3.0.0.0
Microsoft.PowerShell.Utility              3.1.0.0
Microsoft.ServerCore.SConfig              2.0.0.0
Microsoft.WSMan.Management                3.0.0.0
MMAgent                                   1.0
MsDtc                                     1.0.0.0
NetAdapter                                2.0.0.0
NetConnection                             1.0.0.0
NetEventPacketCapture                     1.0.0.0
NetLbfo                                   2.0.0.0
NetNat                                    1.0.0.0
NetQos                                    2.0.0.0
NetSecurity                               2.0.0.0
NetSwitchTeam                             1.0.0.0
NetTCPIP                                  1.0.0.0
NetworkConnectivityStatus                 1.0.0.0
NetworkSwitchManager                      1.0.0.0
NetworkTransition                         1.0.0.0
NFS                                       1.0
OsConfiguration                           1.0.0.0
PcsvDevice                                1.0.0.0
PersistentMemory                          1.0.0.0
PKI                                       1.0.0.0
PlatformIdentifier                        1.0.0.0
PnpDevice                                 1.0.0.0
PrintManagement                           1.1
ProcessMitigations                        1.0.12
PSDesiredStateConfiguration               1.1
PSDiagnostics                             1.0.0.0
PSScheduledJob                            1.1.0.0
PSWorkflow                                2.0.0.0
PSWorkflowUtility                         1.0.0.0
RemoteDesktop                             2.0.0.0
ScheduledTasks                            1.0.0.0
SecureBoot                                2.0.0.0
SecurityCmdlets                           1.0.0.0
ServerCore                                1.0.0.0
ServerManager                             2.0.0.0
ServerManagerTasks                        1.0.0.0
SmbShare                                  2.0.0.0
SmbWitness                                2.0.0.0
SoftwareInventoryLogging                  2.0.0.0
StartLayout                               1.0.0.0
Storage                                   2.0.0.0
StorageBusCache                           1.0.0.0
TLS                                       2.0.0.0
TroubleshootingPack                       1.0.0.0
TrustedPlatformModule                     2.0.0.0
UEV                                       2.1.639.0
UserAccessLogging                         1.0.0.0
VMDirectStorage                           1.0.0.0
VpnClient                                 2.0.0.0
Wdac                                      1.0.0.0
Whea                                      2.0.0.0
WindowsDeveloperLicense                   1.0.0.0
WindowsErrorReporting                     1.0
WindowsSearch                             1.0.0.0
WindowsUpdate                             1.0.0.0
WinHttpProxy                              1.0.0.0

 

 

Microsoft.PowerShell.Operation.Validation 1.0.1:Microsoft PowerShell 操作验证 1.0.1
PackageManagement 1.0.0.1:包管理 1.0.0.1
Pester 3.4.0:Pester 测试框架 3.4.0
PowerShellGet 1.0.0.1:PowerShellGet 1.0.0.1
PSReadline 2.0.0:PSReadline 命令行编辑器 2.0.0
AppBackgroundTask 1.0.0.0:应用后台任务 1.0.0.0
AppLocker 2.0.0.0:应用程序锁定 2.0.0.0
AppvClient 1.0.0.0:App-V 客户端 1.0.0.0
Appx 2.0.1.0:Appx 应用程序包管理 2.0.1.0
BestPractices 1.0:最佳实践 1.0
BitsTransfer 2.0.0.0:BitsTransfer 传输 2.0.0.0
BranchCache 1.0.0.0:BranchCache 分支缓存 1.0.0.0
CimCmdlets 1.0.0.0:CIM 命令 1.0.0.0
ConfigCI 1.0:ConfigCI 配置 CI 1.0
ConfigDefender 1.0:ConfigDefender 配置 Defender 1.0
ConfigDefenderPerformance 1.0:ConfigDefenderPerformance 配置 Defender 性能 1.0
Defender 1.0:Defender 防护 1.0
DeliveryOptimization 1.0.3.0:交付优化 1.0.3.0
DirectAccessClientComponents 1.0.0.0:DirectAccess 客户端组件 1.0.0.0
Dism 3.0:Dism 3.0
DnsClient 1.0.0.0:DnsClient DNS 客户端 1.0.0.0
EventTracingManagement 1.0.0.0:事件追踪管理 1.0.0.0
Get-NetView 2020.6.1.82:Get-NetView 获取网络视图 2020.6.1.82
International 2.0.0.0:国际化支持 2.0.0.0
iSCSI 1.0.0.0:iSCSI 1.0.0.0
IscsiTarget 2.0.0.0:iSCSI 目标 2.0.0.0
ISE 1.0.0.0:ISE(Integrated Scripting Environment)综合脚本环境 1.0.0.0
Kds 1.0.0.0:Kds 1.0.0.0
LAPS 1.0.0.0:LAPS(Local Administrator Password Solution)本地管理员密码解决方案 1.0.0.0
Microsoft.PowerShell.Archive 1.0.1.0:Microsoft PowerShell 存档 1.0.1.0
Microsoft.PowerShell.Diagnostics 3.0.0.0:Microsoft PowerShell 诊断 3.0.0.0
Microsoft.PowerShell.Host 3.0.0.0:Microsoft PowerShell 主机 3.0.0.0
Microsoft.PowerShell.LocalAccounts 1.0.0.0:Microsoft PowerShell 本地账户 1.0.0.0
Microsoft.PowerShell.Management 3.1.0.0:Microsoft PowerShell 管理 3.1.0.0
Microsoft.PowerShell.ODataUtils 1.0:Microsoft PowerShell ODataUtils 1.0
Microsoft.PowerShell.Security 3.0.0.0:Microsoft PowerShell 安全 3.0.0.0
Microsoft.PowerShell.Utility 3.1.0.0:Microsoft PowerShell 实用工具 3.1.0.0
Microsoft.ServerCore.SConfig 2.0.0.0:Microsoft ServerCore 配置 2.0.0.0
Microsoft.WSMan.Management 3.0.0.0:Microsoft WSMan 管理 3.0.0.0
MMAgent 1.0:MMAgent 1.0
MsDtc 1.0.0.0:MsDtc Microsoft 分布式事务协调器 1.0.0.0
NetAdapter 2.0.0.0:NetAdapter 网络适配器 2.0.0.0
NetConnection 1.0.0.0:NetConnection 网络连接 1.0.0.0
NetEventPacketCapture 1.0.0.0:NetEventPacketCapture 网络事件数据包捕获 1.0.0.0

NetLbfo: 网络负载均衡和故障转移(Network Load Balancing and Failover) 2.0.0.0
NetNat: 网络地址转换(Network Address Translation) 1.0.0.0
NetQos: 网络质量服务(Network Quality of Service) 2.0.0.0
NetSecurity: 网络安全(Network Security) 2.0.0.0
NetSwitchTeam: 网络交换机团队(Network Switch Teaming) 1.0.0.0
NetTCPIP: 网络 TCP/IP(Network TCP/IP) 1.0.0.0
NetworkConnectivityStatus: 网络连接状态(Network Connectivity Status) 1.0.0.0
NetworkSwitchManager: 网络交换机管理器(Network Switch Manager) 1.0.0.0
NetworkTransition: 网络过渡(Network Transition) 1.0.0.0
NFS: 网络文件系统(Network File System) 1.0
OsConfiguration: 操作系统配置(Operating System Configuration) 1.0.0.0
PcsvDevice: PowerShell 容器化虚拟化设备(PowerShell Containerization Virtualization Device) 1.0.0.0
PersistentMemory: 持久性内存(Persistent Memory) 1.0.0.0
PKI: 公钥基础设施(Public Key Infrastructure) 1.0.0.0
PlatformIdentifier: 平台标识符(Platform Identifier) 1.0.0.0
PnpDevice: 插拔设备(Plug and Play Device) 1.0.0.0
PrintManagement: 打印管理(Print Management) 1.1
ProcessMitigations: 进程缓解(Process Mitigations) 1.0.12
PSDesiredStateConfiguration: PowerShell 期望状态配置(PowerShell Desired State Configuration) 1.1
PSDiagnostics: PowerShell 诊断(PowerShell Diagnostics) 1.0.0.0
PSScheduledJob: PowerShell 定时作业(PowerShell Scheduled Job) 1.1.0.0
PSWorkflow: PowerShell 工作流程(PowerShell Workflow) 2.0.0.0
PSWorkflowUtility: PowerShell 工作流程实用工具(PowerShell Workflow Utility) 1.0.0.0
RemoteDesktop: 远程桌面(Remote Desktop) 2.0.0.0
ScheduledTasks: 计划任务(Scheduled Tasks) 1.0.0.0
SecureBoot: 安全启动(Secure Boot) 2.0.0.0
SecurityCmdlets: 安全命令(Security Cmdlets) 1.0.0.0
ServerCore: 服务器核心(Server Core) 1.0.0.0
ServerManager: 服务器管理器(Server Manager) 2.0.0.0
ServerManagerTasks: 服务器管理任务(Server Manager Tasks) 1.0.0.0
SmbShare: 共享文件夹(SMB Share) 2.0.0.0
SmbWitness: SMB 见证(SMB Witness) 2.0.0.0
SoftwareInventoryLogging: 软件库存日志记录(Software Inventory Logging) 2.0.0.0
StartLayout: 启动布局(Start Layout) 1.0.0.0
Storage: 存储(Storage) 2.0.0.0
StorageBusCache: 存储总线缓存(Storage Bus Cache) 1.0.0.0
TLS: 传输层安全(Transport Layer Security) 2.0.0.0
TroubleshootingPack: 故障排除包(Troubleshooting Pack) 1.0.0.0
TrustedPlatformModule: 受信任平台模块(Trusted Platform Module) 2.0.0.0
UEV: 用户体验虚拟化(User Experience Virtualization) 2.1.639.0
UserAccessLogging: 用户访问日志记录(User Access Logging) 1.0.0.0
VMDirectStorage: VM 直接存储(VM Direct Storage) 1.0.0.0
VpnClient: VPN 客户端(VPN Client) 2.0.0.0
Wdac: Windows 数据访问组件(Windows Data Access Components) 1.0.0.0
Whea: Windows 硬件错误架构(Windows Hardware Error Architecture) 2.0.0.0
WindowsDeveloperLicense: Windows 开发人员许可证(Windows Developer License) 1.0.0.0
WindowsErrorReporting: Windows 错误报告(Windows Error Reporting) 1.0
WindowsSearch: Windows 搜索(Windows Search) 1.0.0.0
WindowsUpdate: Windows 更新(Windows Update) 1.0.0.0
WinHttpProxy: WinHTTP 代理(WinHTTP Proxy) 1.0.0.0

此命令列出了所有可用模块及其版本,你可以通过增加| Where-Object { $_.Name -eq "ModuleName" }来过滤特定模块的信息。

6. 查询特定应用或组件版本

在某些情况下,你可能需要查询系统上特定应用程序或组件的版本,这可以通过多种方式实现,包括使用Get-AppxPackageGet-ItemProperty等命令。例如,查询Windows商店应用版本:

powershellCopy Code
Get-AppxPackage Microsoft.WindowsStore | Select-Object Name,Version

7. 使用WMI/CIM查询操作系统版本

虽然这不直接关联到PowerShell版本,但了解操作系统版本对于编写兼容脚本也很重要。可以使用WMI(Windows Management Instrumentation)或CIM(Common Information Model)来查询。

powershellCopy Code
Get-CimInstance Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber

或者:

powershellCopy Code
Get-WmiObject Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber

8. 访问注册表获取版本信息

对于某些特定的应用程序或组件,可能需要直接从Windows注册表中读取版本信息。这通常涉及到使用Get-ItemProperty访问注册表路径。

powershellCopy Code
Get-ItemProperty 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, CurrentVersion, CurrentBuild

查看安装路径

在某些情况下,查看PowerShell的安装路径也可以提供一些版本相关的线索,尤其是当你在系统上安装了多个版本时。例如,PowerShell Core(PowerShell 6及以上版本)通常安装在不同的路径下,这与Windows PowerShell(5.1及以下版本)有所区别。

powershellCopy Code
(Get-Command powershell).Source

或者对于PowerShell Core:

powershellCopy Code
(Get-Command pwsh).Source

查询 PowerShell 权限开启情况,您可以执行以下命令:

powershellCopy Code
Get-ExecutionPolicy

这将返回当前 PowerShell 执行策略。执行策略决定了哪些脚本可以在系统上运行。可能的执行策略包括:

  • Restricted(限制):不允许在系统上运行任何脚本。
  • RemoteSigned(远程签名):允许在本地计算机上运行本地创建的脚本,但从远程下载的脚本必须具有数字签名。
  • AllSigned(全部签名):只允许运行数字签名的脚本。
  • Unrestricted(不受限制):允许在系统上运行任何脚本,包括未签名的脚本。

如果您需要更改执行策略,可以使用 Set-ExecutionPolicy 命令。例如,要将执行策略设置为 RemoteSigned,可以执行以下命令:

powershellCopy Code
Set-ExecutionPolicy RemoteSigned

请注意,更改执行策略可能需要管理员权限。


管理 PowerShell 权限的其他命令,包括:

  1. Set-ExecutionPolicy:设置 PowerShell 执行策略。如上例所示,可以使用此命令更改执行策略。

  2. Get-ExecutionPolicy -List:显示系统中所有可用的执行策略,以及每个策略的优先级。

  3. Test-Path:测试指定路径的存在。这可用于在运行脚本之前检查文件或目录是否存在。

  4. Get-ExecutionPolicy -Scope:获取指定范围内的执行策略。您可以指定范围为 Process(当前进程)、CurrentUser(当前用户)、LocalMachine(本地计算机)或 CurrentUser, LocalMachine(当前用户和本地计算机)。

  5. Set-ExecutionPolicy -Scope:设置指定范围内的执行策略。使用此命令可以为不同的范围设置不同的执行策略。

这些命令可以帮助您管理 PowerShell 脚本的执行权限,确保系统的安全性和稳定性。


 

posted @ 2024-02-06 04:58  suv789  阅读(1759)  评论(0编辑  收藏  举报