3步上手PowerShell:跨平台脚本与Docker容器管理完整指南
【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell
PowerShell 是微软出品的跨平台命令行外壳程序与脚本环境,覆盖 Windows、Linux 和 macOS。本文面向新手,用最短路径讲清如何安装并验证 PowerShell、如何用 Docker 运行 PowerShell 容器,以及下一步如何开发自定义 Cmdlet。
解决什么问题:一套语法管所有系统
结论先说:如果你需要在多台不同操作系统的机器上跑同一套自动化脚本,PowerShell 能消除“各写一遍”的成本。
依据有三点:
- 跨平台统一:同一份脚本可在 Windows、Linux、macOS 上运行,管理 Windows 和 Linux 容器时语法一致。
- 面向结构化数据:内置管道与对象模型,处理 JSON、CSV、XML 和 REST API 比拼接文本命令更直接。
- 可容器化:官方提供 PowerShell 容器镜像,容器里跑的就是完整的 PowerShell 环境。
安装验证最快路径
最短可行步骤只有 3 步:克隆仓库、运行安装脚本、验证版本。
# 克隆 PowerShell 仓库 git clone https://gitcode.com/GitHub_Trending/po/PowerShell cd PowerShell # 运行 Linux 安装脚本 bash tools/install-powershell.sh安装完成后进入pwsh交互环境,用这两条命令验证:
# 查看当前版本与运行环境信息 $PSVersionTable # 查看当前可用的实验性功能 Get-ExperimentalFeature如果$PSVersionTable能正常输出版本信息,说明安装成功,可以进入容器场景。
Docker 容器核心命令
PowerShell 官方镜像名为mcr.microsoft.com/powershell,容器生命周期管理只需 4 条命令:
# 拉取 PowerShell 镜像 docker pull mcr.microsoft.com/powershell # 进入容器的交互环境 docker run -it mcr.microsoft.com/powershell pwsh # 查看正在运行的容器 docker ps # 停止指定容器 docker stop <container_id>如果你的场景是把 PowerShell 打包进自己的基础镜像,仓库里的 docker/InstallTarballPackage.sh 提供了 tarball 形式的安装脚本,可直接参考其写法。
从脚本到 Cmdlet:自定义命令入口
当脚本逻辑开始被反复复用时,更合适的形态是把功能封装成 Cmdlet,即一个用 C# 编写的、像Get-Process一样可被管道调用的命令。
仓库自带一个完整的入门示例,位于 docs/cmdlet-example/,思路分四步:
- 创建 .NET Standard 类库项目,保证同一程序集可同时被 PowerShell 7 和 Windows PowerShell 导入:
- 在 NuGet 包管理器中安装
PowerShellStandard.Library,它是编写跨平台 Cmdlet 的引用库:
- 从 PowerShell 专用 NuGet 源安装核心自动化库
System.Management.Automation,它提供[Cmdlet]、[Parameter]等特性定义:
- 参考示例目录中的
Send-Greeting命令,按同样的模式替换成你自己的业务逻辑即可。命令行方式创建模块的完整步骤见 docs/cmdlet-example/command-line-simple-example.md。
进阶资源与下一步
按学习深度排序,以下入口都可直接从仓库内访问:
- 官方文档总目录:docs/,构建环境相关章节在 docs/building/
- 自定义 Cmdlet 图文教程:docs/cmdlet-example/
- 引擎与模块测试用例(可当用法示例读):test/powershell/
- 测试编写规范:docs/testing-guidelines/
一句话收束:先装、再验、然后进容器,PowerShell 的跨平台自动化能力就打通了。建议的下一步动作:打开docs/cmdlet-example/,照着Send-Greeting示例写出你的第一条自定义 Cmdlet。
【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考