PowerShell 获取操作系统版本

2025 年 4 月 30 日 | 阅读 10 分钟

PowerShell 简介以及如何检索操作系统版本

PowerShell 是 Microsoft 的一个任务自动化和配置管理框架,包括命令行 shell 和相关的脚本语言。它旨在自动化系统管理任务,以便系统管理员和 IT 专业人员可以通过执行重复性任务来高效管理系统,同时使系统管理更加简化。多年来,PowerShell 已经升级为可以在跨平台运行;它不仅可以在 Windows 上运行,还可以在 macOS 和 Linux 上运行。这使得它对于在不同环境中操作的 IT 专业人员非常有价值。

PowerShell 本身基于 .NET CLR,以强大的技术访问系统中的任何功能并与操作系统交互。因此,将简单性与可扩展性相结合,使该工具在命令行交互和复杂自动化脚本方面都无与伦比。

PowerShell 的主要功能

PowerShell 引入了一些关键概念,使其与传统命令行界面相比独一无二且用途广泛

  1. Cmdlets:PowerShell 命令被称为 cmdlet,发音为“command-lets”。它更容易记住,因为它遵循动词-名词命名约定。例如,Get-Process 检索有关系统上正在运行的进程的信息,并使用 Set-Execution Policy 更改运行脚本的执行策略。
  2. 管道:它的一个出色功能是 PowerShell 支持管道。此外,一个 cmdlet 的输出可以直接作为另一个 cmdlet 的输入。这有助于轻松地链接命令并完成更复杂的任务。
  3. 面向对象:与处理纯文本的传统 shell 不同,PowerShell 的所有工作都与对象相关。实际上,当任何 cmdlet 返回输出时,它返回的是对象,而不仅仅是简单的文本字符串。这允许进行更高级的数据操作和过滤。
  4. 脚本:Powershell 不仅仅是一个命令行 shell。它还具有完整的脚本语言功能。使用 PowerShell 脚本(.ps1 文件),您可以创建非常复杂的自动化工作流,用于管理目的,从服务设置到监控系统健康状况,都可以在单个脚本中进行管理。

检索操作系统信息

如果需要解决问题、完成升级或新软件与操作系统不兼容,确定操作系统版本可能是必要的。PowerShell 提供多种方法来收集信息,以便快速准确地获取信息。

1. 使用 Get-ComputerInfo

使用 Get-ComputerInfo cmdlet 可以检索有关系统的广泛数据,包括操作系统、硬件、环境详细信息等。它从多个来源收集信息,因此是用于一般系统信息检索版本的好工具。

在此命令中

  • CsName 返回计算机名称。
  • OsName 显示操作系统名称(例如,“Microsoft Windows 10 Pro”)。
  • OsArchitecture 显示系统是 32 位还是64 位
  • WindowsVersion 返回操作系统版本(例如,“10.0.19042”)。
  • WindowsBuildLabEx 提供操作系统的确切内部版本号。

2. 使用 Get-WmiObject

获取操作系统版本的另一种方法是使用 cmdlet Get-WmiObject。此 cmdlet 根据 Windows 管理规范 (WMI) 的基础设施从本地和远程计算机检索管理信息。或者,您可以使用 Get-WmiObject cmdlet 获取有关操作系统版本的信息。

此命令检索

  • Caption:操作系统名称。
  • Version:操作系统版本。
  • BuildNumber:操作系统的内部版本号。

Get-WmiObject 更适合旧系统或需要收集更深入系统信息的情况。它访问 WMI,本质上是一个用于存储系统关键信息的数据库,因此它非常适合管理任务。

为什么使用 PowerShell 获取操作系统版本信息?

  • 自动化:PowerShell 允许您通过远程执行这些命令来收集多台机器上的系统信息。
  • 脚本:您可以将此命令合并到脚本中,用于报告、监控或调试目的。
  • 可扩展性:PowerShell 与其他系统管理工具集成良好,使其成为管理任务的强大选择。
  • 与其他工具集成:PowerShell 无缝集成各种 Microsoft 产品(如 Azure、Exchange 和 SharePoint)和第三方工具,从而实现集中式命令环境来管理多种服务。

为什么检索操作系统版本很重要

了解操作系统版本至关重要,原因如下

  1. 系统兼容性:操作系统的特定版本可能只与某些软件或硬件兼容。例如,某个特定驱动程序可能只在 Windows 10 版本 1909 或更高版本上运行。
  2. 安全性:旧版本的操作系统可能存在已知的漏洞。管理员需要确保系统已更新以减轻安全风险。
  3. 故障排除:在诊断系统问题时,了解操作系统的确切版本和内部版本号有助于缩小潜在问题或不兼容性。
  4. 自动化和报告:使用 PowerShell 脚本,可以自动从数百台机器收集操作系统版本并生成有用的报告,无论是在系统更新过程中还是在审计过程中。

使用 PowerShell 检索操作系统版本的优点和缺点

PowerShell 用于自动化命令、获取系统信息以及执行各种操作,仍然是一个重要的工具。在其流行的用途中,它用于获取计算机上运行的操作系统版本信息。

它在维护系统诊断、合规性审计和确保应用程序兼容性方面发挥着重要作用。像所有其他事物一样,PowerShell 也有一些用户应该了解的缺点。在本扩展讨论中,我们将详细介绍使用 PowerShell 的优缺点,并详细探讨此特定 shell 的优点和缺点。

使用 PowerShell 的优点

1. 全面的系统管理

这是 PowerShell 在系统管理领域可以解决的更大难题的一部分。它的数百个 cmdlet 可以控制从操作系统到用户帐户、安全策略、网络配置甚至 Microsoft Azure 等云环境的所有内容。这使得 PowerShell 成为 IT 专业人员的一体化解决方案,他们可以通过单个命令行界面管理其环境中的几乎所有内容。例如,除了检索操作系统版本之外,管理员还可以使用 PowerShell 安装软件更新、配置防火墙设置或监控系统性能。

用于收集操作系统版本详细信息的 Get-ComputerInfo 和 Get-WmiObject cmdlet 可以扩展到管理系统多个方面的更广泛的脚本中,使 PowerShell 成为系统管理中用途广泛的工具。

2. 与其他系统和服务的集成

PowerShell 的另一个出色功能是它能够与多种形式的系统和服务互操作。例如,PowerShell 本机与 Active Directory、Exchange Server、SharePoint 和 Microsoft 的其他产品配合使用;管理员可以从一个界面管理各种服务。通过 PowerShell 提供的其他模块与 Microsoft Azure 和 AWS 等云平台进行交互。

这种集成能力对于跨混合环境检索和管理系统信息非常有用。例如,管理本地服务器和云虚拟机混合的 IT 管理员可以使用 PowerShell 从混合环境检索操作系统信息,这将使其更易于管理。借助 PowerShell 的远程功能,管理员可以在环境中的多台机器上运行脚本——无论它们位于本地还是云中。

3. 用于高效数据处理的管道

PowerShell 中最强大的工具之一是其管道机制。使用 PowerShell,一个命令的输出可以传递给另一个命令;因此可以设置命令链,这些命令链高效且易于理解。这在检索和过滤操作系统信息时特别有用。

4. 远程管理功能

它具有非常有利于处理多台机器的组织的功能,例如远程管理。使用 PowerShell Remoting 允许管理员获取远程机器上的操作系统信息和许多其他内容,而无需直接访问它们。这在服务器和工作站位于不同地理区域的分布式环境中非常宝贵。

5. 自定义脚本和报告

PowerShell 的脚本功能使用户能够创建独特的脚本,实现各种操作系统版本的自动检索和报告。例如,管理员可以编写一个 PowerShell 脚本,从网络中的多台机器聚合操作系统版本,将该数据保存到 CSV 文件中,然后通过电子邮件将报告发送给相关利益相关者。这种自动化对于必须确保其系统清单的最新管理或频繁生成合规性报告的大型组织来说,将被证明极其有用。

使用 PowerShell 的缺点

1. 新用户的复杂性

然而,PowerShell 是一个极其强大的工具。随之而来的问题是它对大多数新用户来说非常复杂,尤其是那些没有任何或很少脚本或编程经验的人。PowerShell 的面向对象性质,需要理解 cmdlet 参数、管道和不同类型的数据,可能会使新用户难以入门。

对于查询操作系统版本等简单操作,与使用其他工具相比,使用此工具的学习曲线非常陡峭。但是,对于任何对 PowerShell 有更深入了解的人来说,这可能会抵消刚开始使用它时遇到的麻烦。

2. 跨平台 Cmdlet 可用性不一致

尽管 PowerShell 已发展成为一种可在不同操作系统上使用的应用程序,但大多数 cmdlet 在其他平台上并非原生支持或以类似方式工作。例如,用于获取操作系统信息的 cmdlet Get-ComputerInfo 主要为 Windows 特定环境设计,在 macOSLinux 环境中不会按预期工作。在非 Windows 环境中,系统详细信息通常以不同方式或使用平台特定命令收集。

这会在跨平台脚本中造成一些混乱:管理员应该引入条件逻辑来为不同的操作系统编写脚本。例如,一个在 Windows 和 Linux 上检索操作系统信息的检索脚本很可能在 Windows 上使用 Get-ComputerInfo,并在 Linux 上使用一些完全不同的方法(例如,uname -a)来完成相同的工作。

3. 安全风险

深入访问系统的能力,加上脚本功能,使得 PowerShell 如果不加以控制,会非常危险。例如,网络攻击者可以使用 PowerShell 启动恶意脚本或获取对系统级别某些信息的特权访问。实际上,大多数组织都实施严格的执行策略,例如禁用默认脚本执行或使用受限语言模式来限制 PowerShell 脚本的功能。

虽然安全层对于保护系统很重要,但它们也会影响 PowerShell 在合法来源的管理任务中的功能。例如,一个组织会出于安全原因阻止使用 PowerShell Remoting;那么管理员将无法从其他机器远程检索其操作系统信息。

4. 资源开销

PowerShell 功能非常丰富,但确实会带来一些资源利用方面的开销。从多个系统检索信息或与大型数据集交互的复杂脚本可能会对 CPU 和内存造成严重影响。这对于资源有限的系统(例如长时间运行的任务)来说可能是一个问题。

例如,假设管理员有一个 PowerShell 脚本,它从数百台运行脚本的机器中提取操作系统信息。在这种情况下,如果网络或单个系统处于重负载下,这可能会使其变慢甚至超时。在这种情况下,管理员必须优化其脚本以更好地运行或将任务分解为更小的部分。

5. 对 .NET Framework 的依赖

对 .NET 框架的依赖是 PowerShell 的另一个限制。在框架可能未更新或未获得完全支持的环境中,PowerShell 对 .NET 框架的依赖又是一个限制。由于功能依赖于 .NET CLR,因此 .NET 功能的问题可能会阻碍 PowerShell 的性能和可靠性。

例如,PowerShell 和 .NET 版本之间的兼容性可能是一个问题;脚本可能会产生错误或行为异常。然而,PowerShell Core 通过解除与某些 Windows 特定依赖项的耦合来解决大部分这些问题,但仍然依赖于 .NET Core 的运行时环境,这反过来又会在某些环境中产生类似的问题。

结论

  • PowerShell 是一款用途广泛的工具。它通过提取操作系统信息、自动化以及大规模 IT 环境来涵盖大量功能。其面向对象的设计和管道功能,结合其跨平台的完整能力,使其成为即使是最复杂的工作流的理想选择。然而,由于 PowerShell 支持对系统的深度访问,管理员可以深入了解其系统的状态和性能。
  • 其中,重要的优势包括能够使用 PowerShell 进行自动化、可扩展地管理多个系统以及集成到 Active Directory、Exchange 和云环境等其他平台和服务中。PowerShell 的实用性还通过其管理和访问远程计算机的能力得到增强,特别是在分布式网络中,其中无法逐一访问操作机器。脚本自动化任务(例如获取操作系统版本或生成的系统报告等)效率很高,从而降低了人为错误的可能性。
  • 然而,它也有缺点。PowerShell 对于初学者来说是令人生畏的。这是因为它学习曲线陡峭。除此之外,如果使用不当,它会带来安全风险。它在不同平台上也有所不同,其功能也不同。此外,某些 cmdlet 的可用性在不同平台上也有所不同。这会给管理混合环境的用户带来不一致。在运行复杂或长时间运行的脚本时,资源消耗也可能成为一个问题,并且它对 .NET 框架的依赖可能会导致兼容性问题。
  • 尽管存在这些挑战,PowerShell 的优势远远 outweigh 缺点,特别是对于管理大型或多样化 IT 环境的管理员而言。对于那些愿意投入时间掌握其复杂性的人来说,PowerShell 提供了一个强大、灵活且不可或缺的工具,用于自动化任务、检索关键系统信息以及大规模管理 IT 基础设施。