欢迎来到 PowerShell GitHub 社区!PowerShell 是一个跨平台(Windows、Linux 和 macOS)的自动化和配置工具/框架,可以与您现有的工具完美兼容,并针对结构化数据(例如 JSON、CSV、XML 等)、REST API 和对象模型进行了优化。它包含一个命令行 Shell、一个相关的脚本语言以及一个用于处理 cmdlet 的框架。
虽然此存储库最初是 Windows PowerShell 代码库的一个分支,但在此存储库中所做的更改不会移植回 Windows PowerShell 5.1。
这也意味着[此处跟踪的问题][问题]仅适用于 PowerShell 7.x 及更高版本。
Windows PowerShell 特定问题应通过[反馈中心应用][feedback-hub]报告,方法是在类别中选择“应用 > PowerShell”。
如果您是 PowerShell 新手,并且想要了解更多信息,我们建议您查看 入门 文档。
PowerShell 支持 Windows、macOS 和各种 Linux 平台。
更多信息,请参阅 安装 PowerShell。
为了获得最佳升级效果,您应该使用首次安装 PowerShell 时使用的相同安装方法。
每个平台和安装方法的更新方法都不同。
仪表板 使用 PowerShell、Azure 和 PowerBI 可视化社区贡献和项目状态。
如需了解更多关于我们构建此仪表板的方式和原因,请查看这篇博客文章。
GitHub 讨论 是一项功能,旨在让社区内能够自由开放地讨论与代码无关的主题(不同于问题)。
我们正在代码库中进行一项实验,看看它是否有助于将讨论移出问题,以便团队或社区成员能够继续处理问题。
PowerShell 团队成员不应定期参与这些讨论。
PowerShell 团队成员可以选择参与讨论,但我们希望社区成员能够推动讨论,以便团队成员
能够专注于问题。
创建或加入讨论。
本指南将指导您在 Linux 上构建 PowerShell。我们将首先展示如何从头开始设置您的环境。
这些说明假设使用 Ubuntu 16.04 LTS,因为这是团队使用的发行版。
构建模块会尽力支持其他发行版。
使用 Git 需要正确设置;
请参阅使用 PowerShell 存储库、
自述文件 和 贡献指南。
本指南假设您已递归克隆 PowerShell 存储库并通过 cd 命令进入其中。
我们使用 .NET 命令行界面 (dotnet
) 来构建托管组件。
安装工具链非常简单,只需在 PowerShell 中运行 Start-PSBootstrap
即可。
当然,这需要在 Linux 上拥有一个自托管的 PowerShell 副本。
幸运的是,这只需下载并安装软件包 即可。
./tools/install-powershell.sh
脚本也会安装 PowerShell 软件包。
在 Bash 中:
./tools/install-powershell.sh
pwsh
现在您应该位于已安装的 PowerShell 控制台主机中。
只需导入我们的模块,引导依赖项,然后构建即可!
在 PowerShell 中:
Import-Module ./build.psm1
Start-PSBootstrap
Start-PSBootstrap
函数执行以下操作:
apt-get
安装我们的依赖项以及 .NET CLI 工具链的依赖项~/.dotnet
如果您想在 Start-PSBuild
之外使用 dotnet
,请将 ~/.dotnet
添加到您的 PATH
环境变量中。
我们维护一个 PowerShell 模块,其中包含用于构建 PowerShell 的函数 Start-PSBuild
。
由于这是 PowerShell 代码,因此需要自托管。
如果您已按照上面的工具链设置部分操作,则应该已经安装了 PowerShell Core。
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 10 和 Windows Server 2012
R2 上测试过,但它们应该适用于任何依赖项能够正常工作的平台。
使用 Git 需要正确设置;请参阅
自述文件 和
贡献指南。
本指南假设您已递归克隆 PowerShell 存储库并通过 cd 命令进入其中。
安装 Visual Studio 2019。社区版免费提供。
PowerShell/PowerShell 代码库至少需要 Visual Studio 2019 16.7 版本。
使用 Visual Studio Code 构建 PowerShell 依赖于名为“pwsh”的 PowerShell 可执行文件,这意味着
您必须安装 PowerShell Core 6 Beta.9(或更高版本)才能成功构建此项目(通常用于调试)。
我们使用 .NET 命令行界面(dotnet
)来构建 PowerShell。
我们当前使用的版本在此代码库根目录下的 global.json
中提及。
Start-PSBootstrap
函数会自动安装它并将其添加到您的路径中:
Import-Module ./build.psm1
Start-PSBootstrap -Scenario Dotnet
或者您可以直接调用 Install-Dotnet
:
Install-Dotnet
它会删除之前安装的 .NET CLI 版本,并安装 PowerShell Core 所依赖的版本。
如果您在安装 dotnet
时遇到任何问题,请参阅其文档。
我们维护一个包含 Start-PSBuild
函数的 PowerShell 模块 来构建 PowerShell。
我们不建议使用 Visual Studio 开发环境终端来构建源代码。
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 测试。
Import-Module ./build.psm1
Start-PSPester -UseNuGetOrg
我们目前有问题 #3400 来跟踪此任务。
本指南是对 Linux 指南 的补充,因为
在 macOS 上的构建几乎完全相同。
.NET Core 2.x(顺便说一下,我们)仅支持 macOS 10.13 及更高版本。
您需要 Homebrew 或 MacPorts,它们是 macOS 上缺少的软件包管理器。
安装完成后,请按照相同的说明下载并
在您的 macOS 计算机上安装一个自托管的 PowerShell 副本。
从 pwsh.exe
运行 Import-Module ./build.psm1
,并使用 Start-PSBootstrap
安装依赖项。
Start-PSBootstrap
函数执行以下操作:
brew
或 port
安装 OpenSSL 和 GNU WGet~/.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
[!重要]
PowerShell 容器镜像目前由 .NET 团队维护。“mcr.microsoft.com/powershell”上的容器目前无人维护。
许可证:通过请求和使用 Windows 容器的容器操作系统镜像,您确认、理解并同意 [Microsoft Artifact Registry][mcr] 上提供的补充许可条款。
[mcr]:https://mcr.microsoft.com/en-us/product/powershell/tags