尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

PowerShell 跨平台自动化实战速查:一套脚本管好三台机器

PowerShell 跨平台自动化实战速查:一套脚本管好三台机器 PowerShell 跨平台自动化实战速查一套脚本管好三台机器【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell同时维护 Windows、Linux 和 macOS 的运维与开发同学用 PowerShell 这个跨平台脚本环境同一套语法在三种系统上都能跑把容器、文件和进程管理收敛到一份脚本里。本速查面向 DevOps 新手和普通用户。 三台机器三套脚本你可能正卡在同一个坑里部署任务来了Windows 上跑一份 .ps1拷到 Linux 服务器一半命令不认Mac 上还得再改一版。改一个容器配置要重新敲一遍命令手滑打错一个字母就得从头再来。更烦的是每加一台新机器就要再抄一遍脚本。PowerShell 解决的就是这件事——写一套语法Windows、Linux、macOS 都能执行而不是每个系统养一份方言版。️ 一条命令装好并验证环境装到机器上的最短路径三个系统的安装方式各不相同仓库里tools/目录下就有现成的安装脚本Linux/macOS 用.sh版Windows 用.ps1版。克隆仓库后直接运行即可git clone https://gitcode.com/GitHub_Trending/po/PowerShell cd PowerShell/tools ./install-powershell.sh各平台差异一张表带过系统安装方式Windows运行install-powershell.ps1或官方安装包与系统自带的 Windows PowerShell 并存不覆盖Linuxinstall-powershell.sh或发行版包管理器macOSinstall-powershell.sh或 Homebrew一条命令验证装好了没有打开新终端执行下面这行看到版本号输出PSVersion 为 7.x 即最新版就说明环境就绪$PSVersionTable装完先别急着写逻辑确认版本是排掉一半环境怪问题的最低成本动作。⚙️ 核心工作流把一个跨平台 Cmdlet 打包成模块这是本仓库最具代表性的完整路径。先解释两个词Cmdlet 是 PowerShell 的内置命令比如Get-ChildItem用 C# 写成、像插件一样被加载二进制模块就是编译出来的 dll 文件。走通准备 → 执行 → 验证三段你就有了一次编写、三平台导入的能力。准备一条命令建跨平台库项目用 dotnet 命令新建一个类库.NET Standard 是 Windows 和 Linux 上 .NET 的通用子集保证两边都能跑再通过 NuGet.NET 的包管理器可以理解成库的应用商店加上 PowerShell 的参考包dotnet new classlib --name MyModule dotnet add package PowerShellStandard.Library在可视化界面里创建对应项目的效果如下选 Class Library (.NET Core) 类型、命名为你的模块名即可参考包在 NuGet 源里搜索System.Management.Automation安装这就是 Cmdlet 编写所依赖的核心程序集执行十行代码写出你的第一个 Cmdlet核心就三件事用[Cmdlet]特性声明命令名、用[Parameter]声明参数、在处理方法里输出结果。照搬仓库文档里的示例写一个给消息加上时间戳再输出的命令[Cmdlet(VerbsCommunications.Write, TimestampedMessage)] public class WriteTimestampedMessageCommand : PSCmdlet { [Parameter(Position 1)] public string Message { get; set; } string.Empty; protected override void EndProcessing() { WriteObject($[{DateTime.Now:u}] - {Message}); } }写完之后编辑器里的整体结构应该长这样左侧代码、右侧解决方案树中可见 NuGet 依赖验证编译、加载、调用三步走编译后在输出目录会生成 dll加载进 PowerShell Core 即可使用dotnet build Import-Module ./MyModule/bin/Debug/netstandard2.0/MyModule.dll Write-TimestampedMessage 部署完成看到带时间戳的输出说明模块工作正常。把这同一个 dll 拷到 Linux 或 Mac 上跑同样的导入和调用结果一致。如果编译报错先看输出的第一条错误多数时候是参考包没装全。❓ 新手高频卡点速查问装了 pwsh 但终端提示找不到命令答多半是新开的终端还没刷新 PATH。重开一个终端再试仍不行就检查安装路径是否加入了 PATH。问Import-Module 报 Could not load netstandard答这是老版本 Windows PowerShell.NET Framework 4.7.1 之前与 .NET Standard 2.0 不兼容导致的。升级 .NET Framework或直接用 PowerShell Core后者没有这个问题——仓库文档专门记录过这个坑。问同一份脚本在 Windows 和 Linux 上结果不一样答先查两处路径分隔符Linux 用/且区分大小写Windows 用\和命令是否存在差异。路径尽量用Join-Path拼接别手写斜杠。问Docker 容器里能直接用吗答可以。官方mcr.microsoft.com/powershell镜像镜像可以理解成容器的安装盘预装了 pwsh容器里跑的是同一份脚本镜像升级不影响脚本逻辑。 延伸与资源跨平台构建与开发指南Cmdlet 示例完整流程命令行版Visual Studio 环境下的 Cmdlet 编写指南引擎与语言特性的完整测试套件下次再遇到三台机器三份脚本的活儿直接复用这一套建库、十行 Cmdlet、一次导入脚本在 Windows、Linux、macOS 上跑的是同一份。【免费下载链接】PowerShellPowerShell for every system!项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表