PowerShell是一个跨平台的自动化和配置工具

PowerShell

欢迎来到 PowerShell GitHub 社区!PowerShell 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具/框架,可以与您现有的工具完美兼容,并针对结构化数据(例如 JSON、CSV、XML 等)、REST API 和对象模型进行了优化。它包含一个命令行 Shell、一个相关的脚本语言以及一个用于处理 cmdlet 的框架。

Windows PowerShell vs. PowerShell 7+

虽然此存储库最初是 Windows PowerShell 代码库的一个分支,但在此存储库中所做的更改不会移植回 Windows PowerShell 5.1。
这也意味着[此处跟踪的问题][问题]仅适用于 PowerShell 7.x 及更高版本。
Windows PowerShell 特定问题应通过[反馈中心应用][feedback-hub]报告,方法是在类别中选择“应用 > PowerShell”。

PowerShell 新手?

如果您是 PowerShell 新手,并且想要了解更多信息,我们建议您查看 入门 文档。

获取 PowerShell

PowerShell 支持 Windows、macOS 和各种 Linux 平台。
更多信息,请参阅 安装 PowerShell

升级 PowerShell

为了获得最佳升级效果,您应该使用首次安装 PowerShell 时使用的相同安装方法。
每个平台和安装方法的更新方法都不同。

社区仪表板

仪表板 使用 PowerShell、Azure 和 PowerBI 可视化社区贡献和项目状态。

如需了解更多关于我们构建此仪表板的方式和原因,请查看这篇博客文章

讨论

GitHub 讨论 是一项功能,旨在让社区内能够自由开放地讨论与代码无关的主题(不同于问题)。

我们正在代码库中进行一项实验,看看它是否有助于将讨论移出问题,以便团队或社区成员能够继续处理问题。
PowerShell 团队成员不应定期参与这些讨论。
PowerShell 团队成员可以选择参与讨论,但我们希望社区成员能够推动讨论,以便团队成员
能够专注于问题。

创建或加入讨论

在 Linux 上构建 PowerShell

本指南将指导您在 Linux 上构建 PowerShell。我们将首先展示如何从头开始设置您的环境。

环境

这些说明假设使用 Ubuntu 16.04 LTS,因为这是团队使用的发行版。
构建模块会尽力支持其他发行版。

Git 设置

使用 Git 需要正确设置;
请参阅使用 PowerShell 存储库
自述文件贡献指南

本指南假设您已递归克隆 PowerShell 存储库并通过 cd 命令进入其中。

工具链设置

我们使用 .NET 命令行界面 (dotnet) 来构建托管组件。

安装工具链非常简单,只需在 PowerShell 中运行 Start-PSBootstrap 即可。
当然,这需要在 Linux 上拥有一个自托管的 PowerShell 副本。

幸运的是,这只需下载并安装软件包 即可。
./tools/install-powershell.sh 脚本也会安装 PowerShell 软件包。

在 Bash 中:

sh 复制代码
./tools/install-powershell.sh

pwsh

现在您应该位于已安装的 PowerShell 控制台主机中。
只需导入我们的模块,引导依赖项,然后构建即可!

在 PowerShell 中:

powershell 复制代码
Import-Module ./build.psm1
Start-PSBootstrap

Start-PSBootstrap 函数执行以下操作:

  • 添加 LLVM 包源
  • 通过 apt-get 安装我们的依赖项以及 .NET CLI 工具链的依赖项
  • 卸载所有早期版本的 .NET CLI
  • 下载并安装 .NET Core SDK 2.0.0 到 ~/.dotnet

如果您想在 Start-PSBuild 之外使用 dotnet,请将 ~/.dotnet 添加到您的 PATH 环境变量中。

使用我们的模块构建

我们维护一个 PowerShell 模块,其中包含用于构建 PowerShell 的函数 Start-PSBuild
由于这是 PowerShell 代码,因此需要自托管。
如果您已按照上面的工具链设置部分操作,则应该已经安装了 PowerShell Core。

powershell 复制代码
Import-Module ./build.psm1
Start-PSBuild -UseNuGetOrg

恭喜!如果一切顺利,PowerShell 现已构建完成。
Start-PSBuild 脚本将输出可执行文件的位置:

./src/powershell-unix/bin/Debug/net6.0/linux-x64/publish/pwsh

如果您运行上述可执行文件,现在应该正在运行刚刚构建的 PowerShell Core。
您可以使用“Start-PSPester -UseNuGetOrg”运行我们的跨平台 Pester 测试,使用“Start-PSxUnit”运行我们的 xUnit 测试。

在 Windows 上构建适用于 .NET Core 的 PowerShell

本指南将指导您在 Windows 上构建适用于 .NET Core 的 PowerShell。
我们将首先展示如何从头开始设置您的环境。

环境

这些说明已在 Windows 10 和 Windows Server 2012
R2 上测试过,但它们应该适用于任何依赖项能够正常工作的平台。

Git 设置

使用 Git 需要正确设置;请参阅
自述文件
贡献指南

本指南假设您已递归克隆 PowerShell 存储库并通过 cd 命令进入其中。

Visual Studio

安装 Visual Studio 2019。社区版免费提供。

PowerShell/PowerShell 代码库至少需要 Visual Studio 2019 16.7 版本。

Visual Studio Code

使用 Visual Studio Code 构建 PowerShell 依赖于名为“pwsh”的 PowerShell 可执行文件,这意味着
您必须安装 PowerShell Core 6 Beta.9(或更高版本)才能成功构建此项目(通常用于调试)。

.NET CLI

我们使用 .NET 命令行界面dotnet)来构建 PowerShell。
我们当前使用的版本在此代码库根目录下的 global.json 中提及。
Start-PSBootstrap 函数会自动安装它并将其添加到您的路径中:

powershell 复制代码
Import-Module ./build.psm1
Start-PSBootstrap -Scenario Dotnet

或者您可以直接调用 Install-Dotnet

powershell 复制代码
Install-Dotnet

它会删除之前安装的 .NET CLI 版本,并安装 PowerShell Core 所依赖的版本。
如果您在安装 dotnet 时遇到任何问题,请参阅其文档

使用我们的模块构建

我们维护一个包含 Start-PSBuild 函数的 PowerShell 模块 来构建 PowerShell。

我们不建议使用 Visual Studio 开发环境终端来构建源代码。

powershell 复制代码
Import-Module ./build.psm1
Start-PSBuild -Clean -PSModuleRestore -UseNuGetOrg

恭喜!如果一切顺利,PowerShell 现已构建完成,并且可以执行为 ./src/powershell-win-core/bin/Debug/net6.0/win7-x64/publish/pwsh.exe

此位置的格式为 ./[project]/bin/[configuration]/[framework]/[rid]/publish/[binary name]
我们的项目是 powershell,默认配置为 Debug
框架是 net6.0,默认运行时标识符为 win7-x64
二进制文件名称为 pwsh
函数 Get-PSOutput 将返回可执行文件的路径;
因此,您可以通过 & (Get-PSOutput) 执行开发副本。

powershell 项目是 .NET Core PowerShell 宿主。
它是顶级项目,因此 dotnet build 会以传递方式构建其所有依赖项,
并生成 pwsh 可执行文件。
跨平台宿主通过 --help 内置了文档。

您可以使用 Start-PSPester 运行我们的跨平台 Pester 测试。

powershell 复制代码
Import-Module ./build.psm1
Start-PSPester -UseNuGetOrg

在 Visual Studio 中构建

我们目前有问题 #3400 来跟踪此任务。

在 macOS 上构建 PowerShell

本指南是对 Linux 指南 的补充,因为
在 macOS 上的构建几乎完全相同。

.NET Core 2.x(顺便说一下,我们)仅支持 macOS 10.13 及更高版本。

环境

您需要 HomebrewMacPorts,它们是 macOS 上缺少的软件包管理器。
安装完成后,请按照相同的说明下载并
在您的 macOS 计算机上安装一个自托管的 PowerShell 副本。
pwsh.exe 运行 Import-Module ./build.psm1,并使用 Start-PSBootstrap 安装依赖项。

Start-PSBootstrap 函数执行以下操作:

  • 使用 brewport 安装 OpenSSL 和 GNU WGet
  • 卸载所有早期版本的 .NET CLI
  • 下载并安装 .NET Core SDK 到 ~/.dotnet

如果您想在 Start-PSBuild 之外使用 dotnet
请将 ~/.dotnet 添加到您的 PATH 环境变量中。

错误:打开的文件过多

由于 NuGet 中存在 bug,如果不增加限制,dotnet restore 命令将会失败。
请在您的会话中运行 ulimit -n 2048 来修复此问题;
将其添加到您的 Shell 配置文件中以永久修复此问题。

由于 #847,我们无法在构建模块中为您执行此操作。

使用我们的模块构建

运行“pwsh”启动 PowerShell 会话,然后从模块中使用“Start-PSBuild -UseNuGetOrg”。

构建完成后,PowerShell 将位于“./src/powershell-unix/bin/Debug/net6.0/osx-x64/publish/pwsh”。

法律和许可

PowerShell 采用 [MIT 许可证][] 授权。

[MIT 许可证]:https://github.com/PowerShell/PowerShell/tree/master/LICENSE.txt

Docker 容器

[!重要]
PowerShell 容器镜像目前由 .NET 团队维护。“mcr.microsoft.com/powershell”上的容器目前无人维护。

许可证:通过请求和使用 Windows 容器的容器操作系统镜像,您确认、理解并同意 [Microsoft Artifact Registry][mcr] 上提供的补充许可条款。

[mcr]:https://mcr.microsoft.com/en-us/product/powershell/tags

关于项目

PowerShell 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具/框架,可以与您现有的工具完美兼容,并针对结构化数据(例如 JSON、CSV、XML 等)、REST API 和对象模型进行了优化。它包含一个命令行 Shell、一个相关的脚本语言以及一个用于处理 cmdlet 的框架。
MIT
C#
50,242
7973
1437
2016-01-14
2025-10-11

增长趋势 - stars