PowerShell 技能连载 - 跨平台脚本开发

适用于 PowerShell 7.0 及以上版本(Windows / Linux / macOS)

PowerShell 7 是微软推出的跨平台版本,基于 .NET 构建,可以在 Windows、Linux 和 macOS 三个操作系统上运行。这为运维工程师带来了一个统一脚本语言的可能性——同一套 PowerShell 脚本理论上可以在不同平台上执行,减少了学习成本和维护负担。但现实中的跨平台开发远比”能跑起来”复杂得多。

不同操作系统在文件系统结构、路径规范、大小写敏感性、权限模型、包管理方式等方面存在显著差异。如果不做适配,一个在 Windows 上完美运行的脚本放到 Linux 上可能处处报错。比如路径分隔符的差异(\ vs /)、环境变量的读取方式、甚至某些 cmdlet 的可用性都会因平台而异。

本文将从平台检测与条件分支、路径与文件系统差异处理、跨平台工具函数库三个维度,介绍如何编写真正能在三大平台上稳定运行的 PowerShell 脚本。掌握这些技巧后,你可以将运维自动化脚本打包成跨平台模块,在混合环境中统一管理。

阅读更多

PowerShell 技能连载 - Windows 开发环境配置即代码

适用于 PowerShell 7.0 及以上版本

在 Linux 和 macOS 世界里,”Dotfiles” 文化早已深入人心——开发者把 shell 配置、编辑器偏好、软件包清单统统放进 Git 仓库,一条命令就能在新机器上完整还原工作环境。这种”配置即代码”(Configuration as Code)的理念不仅节省时间,更重要的是保证了多台设备之间的一致性,也让灾难恢复变得轻而易举。

Windows 平台长期以来缺少类似的标准化方案。开发者通常需要手动下载安装包、逐一点击安装向导、手动配置环境变量和注册表项。整个过程既繁琐又容易遗漏。随着 Windows Package Manager(winget)的成熟和 PowerShell 7 的普及,Windows 上也可以实现与 Unix 系统媲美的自动化环境配置流程。

本文将介绍如何使用 PowerShell 结合 winget 构建一套完整的”Windows Dotfiles”方案:自动安装常用开发工具链、管理系统配置与偏好设置,以及通过 Git 仓库实现多机同步和一键恢复。

阅读更多

PowerShell 技能连载 - Q1 技术回顾与展望

适用于 PowerShell 5.1 及以上版本

2026 年第一季度即将画上句号。回顾这三个月,PowerShell 生态在多个方向上都有值得关注的进展:PowerShell 7.x 持续迭代,跨平台能力进一步增强;AI 辅助编程工具链加速成熟,越来越多团队开始将大语言模型嵌入到自动化工作流中;社区在安全基线、基础设施即代码(IaC)等领域的最佳实践也在不断沉淀。

每个季度末做一次技术盘点,不仅是对过往工作的梳理,更是为下个阶段的学习和工作明确方向。本文将分三个部分展开:Q1 技术盘点、实战经验总结以及 Q2 学习路线规划,并附上可直接运行的 PowerShell 脚本来帮助你完成自己的回顾与展望。

阅读更多

PowerShell 技能连载 - PowerShellGet v3 与模块生态

适用于 PowerShell 7.0 及以上版本

PowerShell 的强大很大程度上来自于其丰富的模块生态——从 AWS 和 Azure 的云管理工具,到 Pester 测试框架、Plaster 项目脚手架,社区贡献了成千上万的实用模块。而这一切的基石就是包管理器。PowerShellGet v3(即 PSResourceGet)作为新一代包管理模块,基于 NuGet v3 协议从头重写,带来了显著的性能提升和更现代化的 API 设计。

与 v2 相比,PSResourceGet 的安装和搜索速度快了数倍,支持并行下载,资源类型从单一的 Script 和 Module 扩展到了 DSCResource、Command、RoleCapability 等更细粒度的分类。同时,它对私有仓库(如 Azure Artifacts、JFrog Artifactory、Sonatype Nexus)的原生支持,让企业内部模块的分发和管理变得前所未有的便捷。

本文将从三个层面展开:首先介绍 PSResourceGet 的安装配置与基础模块管理操作,然后深入讲解依赖解析与版本锁定策略,最后演示如何将自研模块发布到公共仓库或私有仓库,并融入 CI/CD 流水线。

阅读更多

PowerShell 技能连载 - 提示符与界面定制

适用于 PowerShell 7.0 及以上版本

每天在终端里敲命令数小时,默认的 PS C:\> 提示符只能告诉你当前路径,其他信息一概欠奉。当你在多个 Git 仓库之间切换、管理不同的 Azure 订阅、激活不同的 Python 虚拟环境时,一个信息丰富的提示符可以让你瞬间掌握上下文状态,减少低级错误。

PowerShell 的提示符本质上就是一个名为 prompt 的函数——你可以自由重写它。无论是显示 Git 分支和脏状态、上一次命令的执行耗时、当前用户权限级别,还是用颜色区分不同的服务器环境,都可以通过几行代码实现。本文将带你从手写 prompt 函数开始,再到集成 Oh My Posh 这类成熟框架,最后补充一套提升日常效率的实用工具函数。

阅读更多

PowerShell 技能连载 - Azure Policy 合规治理

适用于 PowerShell 7.0 及以上版本

在多团队、多订阅的云环境中,资源合规性是治理的核心难题。开发团队随手创建了一个 Premium SKU 的 Redis 缓存,费用瞬间翻了十倍;某个资源组忘了打标签,月底账单无法分摊到业务线;还有人不小心把资源部署到了不支持数据驻留的区域。这些问题在单订阅时还能人工检查,到了几十个订阅、上百个资源组的规模,靠人工审计根本忙不过来。

Azure Policy 提供了声明式的合规规则引擎,可以在资源创建或更新时自动评估是否满足预设条件。不满足条件的资源可以被审计记录、拒绝创建,甚至自动修复到合规状态。结合管理组(Management Group)的层级结构,一条策略可以向下继承到所有子订阅,真正做到”治理即代码”。

本文将演示如何通过 PowerShell 完成 Azure Policy 的三大核心操作:策略定义与管理、策略分配与范围控制、合规审计与自动修复。让你从手工巡检的时代彻底迈入自动化合规治理。

阅读更多

PowerShell 技能连载 - Azure 成本管理与优化

适用于 PowerShell 7.0 及以上版本

随着企业云上工作负载的增长,Azure 账单往往会以意想不到的速度膨胀。开发测试环境忘记关闭、过度配置的虚拟机规格、长期闲置的存储账户,这些看似微小的浪费累积起来可能占云总支出的 20% 到 30%。手动在 Azure 门户中逐项检查既耗时又容易遗漏,尤其是管理多个订阅的团队。

FinOps(云财务运营)实践提倡将成本管理融入工程流程,而非仅仅交给财务部门事后核算。PowerShell 在这一领域有着天然优势:它能调用 Azure Cost Management API 获取精细化费用数据、自动创建预算和告警规则、扫描资源利用率并生成优化建议。将成本治理自动化后,团队可以从被动应对账单转变为主动控制支出。

本文将围绕三个核心场景展开:按资源组和标签维度查询成本趋势、设置多级预算告警并集成 Action Group 通知、以及基于利用率数据生成资源优化建议和自动清理方案。所有脚本均基于 Az PowerShell 模块,可直接集成到 Azure Automation 或 CI/CD 流水线中。

阅读更多

PowerShell 技能连载 - Azure App Configuration 集中配置

适用于 PowerShell 7.0 及以上版本

在微服务架构中,每个服务都有自己的 appsettings.json 或环境变量文件来管理配置。随着服务数量增长,配置分散在各处的问题日益严重:修改一个数据库连接字符串需要逐个服务更新并重新部署,不同环境之间的配置差异难以追踪,紧急开关的生效时间更是无法保证。这种”配置碎片化”不仅增加了运维成本,也埋下了安全隐患。

Azure App Configuration 正是为解决这些问题而生的集中化配置管理服务。它提供统一的键值存储,支持标签(Label)实现环境隔离,内置 Feature Flag 功能支持灰度发布,并通过 Sentinel 机制实现配置的动态刷新——所有这些都不需要重启应用。结合 PowerShell 的自动化能力,我们可以将配置管理纳入 CI/CD 流水线,实现配置的版本控制、审计追踪和跨环境同步。

本文将围绕三个核心场景展开:配置存储的日常管理操作、Feature Flag 的创建与条件控制,以及配置的批量导入导出与环境间同步。掌握这些技能后,你就能用 PowerShell 构建一套完整的配置管理自动化方案。

阅读更多

PowerShell 技能连载 - 模块开发与测试

适用于 PowerShell 7.0 及以上版本

PowerShell 模块是代码复用和分发的核心单元。将常用的函数打包为模块,不仅可以让团队成员通过 Import-Module 一行命令加载全部功能,还能发布到 PowerShell Gallery(PSGallery)供全球社区使用。然而模块的质量直接影响使用者的信任度——一个没有测试覆盖的模块,任何一次改动都可能引入难以察觉的回归缺陷。

现代 PowerShell 模块开发已经形成了一套成熟的工程实践:使用 Plaster 脚手架工具初始化标准项目结构,用 Pester 测试框架编写单元测试和集成测试,再通过 CI/CD 流水线实现自动化构建、测试和发布。这套流程不仅能保证模块质量,还能让你在发布新版本时充满信心。

本文将从模块项目的标准结构入手,逐步展示 Pester 测试的编写方法,最后介绍如何将模块发布到 PSGallery 并接入 CI/CD 自动化流程。

阅读更多
PowerShell 技术 QQ 群