为什么使用 PowerShell?17 Mar 2025 | 5 分钟阅读 PowerShell 是一个任务自动化系统,它包含一个命令行 shell、一个脚本语言和一个跨平台运行的配置管理框架。PowerShell 与 Windows、Linux 和 macOS 兼容。 Microsoft 的 PowerShell 是一个任务自动化和配置管理框架,它包含一个命令行 shell 和一个脚本语言。最初它只是一个仅限于 Windows 的组件,称为 Windows PowerShell,但随着 2016 年 8 月 18 日 PowerShell Core 的发布,它变成了开源和跨平台的。前者使用 .NET Framework,而后者使用 .NET Core。 在 PowerShell 中,管理活动通常通过 cmdlet(发音为 command-let)完成,这些 cmdlet 是实现特定操作的专用 .NET 类。它们通过允许 PowerShell 访问文件系统或注册表等各种数据存储中的数据来工作,这些数据存储已通过提供程序暴露给它。 PowerShell 允许第三方开发人员贡献 cmdlet 和提供程序。脚本可以使用 cmdlet,然后这些 cmdlet 可以打包成模块。 PowerShell 还具有一个托管 API,允许将 PowerShell 运行时集成到其他程序中。这些程序中的 PowerShell 功能可用于实现各种操作,包括通过图形界面提供的操作。 Microsoft Exchange Server 2007 利用了这一功能,将其管理能力公开为 PowerShell cmdlet 和提供程序,并开发了图形管理工具作为运行所需 cmdlet 的 PowerShell 主机。其他 Microsoft 产品,如 Microsoft SQL Server 2008,提供了可通过 PowerShell cmdlet 访问的管理接口。 Get-Help cmdlet 提供了对 PowerShell 广泛的基于控制台的帮助的访问(相当于 Unix shell 中的 man pages)。Update-Help cmdlet 可以从 Internet 检索更新的本地帮助内容。或者,也可以使用 Get-Help 的 -online 开关来逐个案例地从 Web 获取帮助。 背景MS-DOS 是唯一使用命令行界面的操作系统。 两者都支持一些基本内部指令。其他用途必须构建单独的控制台程序。它们还附带一个简单的脚本语言(批处理文件),可用于自动化各种操作。 Windows Server 2003 的问题有所改善,但脚本支持仍然不足。 PowerShell在最初发布后不久,Microsoft 于 2006 年 4 月 25 日重新命名了 Monad Windows PowerShell,将其定位为其管理技术组合中的重要组成部分。同时,PowerShell Release Candidate 1 发布。 这次重命名和 RC 的一个重要方面是,它现在是 Windows 的一部分,而不仅仅是附加组件。 2007 年 1 月 30 日,面向早期 Windows 版本的 PowerShell 发布。PowerShell v2.0 在 PowerShell v1.0 发布之前就已经启动。 Microsoft 在开发过程中发布了三个社区技术预览版(CTP)。Microsoft 将这些版本提供给公众。 Windows 10 包含一个 PowerShell 测试框架。Microsoft 本身于 2016 年 8 月 18 日声明,PowerShell 将开源和跨平台,现在将支持 Windows、macOS、CentOS 和 Ubuntu。 源代码已在 GitHub 上公开。由于转向开源,推出了一种名为“PowerShell Core”的新版本 PowerShell,它运行在 .NET Core 上。它不应与使用整个 .NET Framework 的“Windows PowerShell”混淆。从 5.1 版本开始,Windows Server 2016 Nano Server 随附 PowerShell Core。 脚本语言简单来说,PowerShell 是一种脚本语言,常用于自动化系统管理,这意味着它允许用户自动执行任务,而不是手动运行。它也用于 CI/CD 系统中开发、测试和部署解决方案。.NET 公共语言运行时 (CLR) 是 PowerShell 的基础。 在 PowerShell 中,无需解析文本输出即可获取信息。在 PowerShell 中,所有输入和输出都使用 .NET 对象。以下是 PowerShell 脚本语言的一些特性:
配置管理PowerShell 中的所需状态配置 (DSC) 是一个管理框架,允许您使用代码即配置来管理您的公司基础设施。您可以使用 DSC 执行以下操作:
什么是 PowerShell 命令(cmdlet)?PowerShell 命令称为 cmdlet,发音为 command-let。除了 cmdlet 之外,PowerShell 还允许您在系统上执行任何命令。 什么是 cmdlet?PowerShell cmdlet 不是独立的可执行文件,而是原生的 PowerShell 命令。PowerShell 模块是 cmdlet 的集合,可以按需加载。 在 PowerShell 环境中,cmdlet 是执行特定任务的专用命令。它们是 PowerShell 堆栈的原生命令。像 Get-ChildItem 这样的 cmdlet 遵循 Verb-Noun(动词-名词)命名模式,这使得它们成为自文档化代码。 如果 cmdlet 返回一个对象集合,则在进入管道中的下一个对象之前,会处理集合中的每个对象。 Cmdlet 是 PowerShell 运行时在执行过程中创建和调用的专用 .NET 类。 这些基础类定义了一组方法: - BeginProcessing()、ProcessRecord() 和 EndProcessing() - cmdlet 的实现会重写这些方法以提供功能。当调用 cmdlet 时,PowerShell 会按顺序调用这些函数,如果收到管道输入,则调用 ProcessRecord()。 列出了常用动词的枚举。 如果 cmdlet 接受管道或命令行参数输入,则该类必须为其相应的属性提供一个修改器实现。 PowerShell 使用修改器将参数值或管道输入传递给它,这些值由修改器实现记录在类变量中。实现功能的那些方法然后引用这些值。 它们可以用任何 .NET 语言编写,并且可以引用任何 .NET API。此外,PowerShell 提供了 WriteObject() 等 API,可用于访问 PowerShell 特定功能,例如将结果对象写入管道。 Cmdlet 可以直接使用 .NET 数据访问 API,或利用 PowerShell 提供程序的 PowerShell 框架,该框架通过唯一路径使数据存储可用。驱动器号及其内部的层次结构(称为目录)用于公开数据存储。 其他程序可以向 PowerShell 注册 cmdlet,以便 PowerShell 可以处理它们,并且它们还可以添加专用提供程序(如果它们封装了任何数据存储,例如数据库)。 Cmdlet 名称PowerShell 使用动词-名词(Verb-Noun)的名称对来命名 cmdlet。PowerShell 中的 Get-Command cmdlet 用于检索在命令 shell 中注册的所有 cmdlet。这里的命令中的名词指定了 cmdlet 执行其操作的资源,而命令中的动词则标识了 cmdlet 执行的操作。 |
我们请求您订阅我们的新闻通讯以获取最新更新。