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

适用于 PowerShell 7.0 及以上版本

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

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

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

阅读更多

PowerShell 技能连载 - 加密与数据保护

适用于 PowerShell 5.1 及以上版本

在现代运维和自动化场景中,敏感数据几乎无处不在——数据库连接字符串、API 密钥、用户个人信息、财务记录等。如果这些数据以明文形式存储或传输,一旦系统被入侵或日志泄露,后果将不堪设想。加密(Encryption)是保护数据机密性的最后一道防线。

PowerShell 依托 .NET Framework / .NET 的 System.Security.Cryptography 命名空间,提供了从对称加密、非对称加密到哈希校验、数字签名的完整加密工具链。无论是在脚本中保护凭据、验证文件完整性,还是对发布脚本进行代码签名,这些能力都是编写安全自动化脚本的基础。

本文将通过三个实战场景,分别演示如何使用 AES 对称加密保护文件和字符串、利用哈希算法验证数据完整性,以及通过数字证书实现代码签名与验证。

阅读更多

PowerShell 技能连载 - 打印机与打印服务管理

适用于 PowerShell 5.1 及以上版本

在企业 IT 运维中,打印机管理看似简单,实则是一项高频且容易出问题的工作。新员工入职需要分配部门打印机、打印队列卡住需要及时清理、驱动更新需要在多台终端上统一部署——这些操作如果手动执行,不仅耗时而且容易出错。

Windows Server 2012 引入了 PrintManagement 模块,其中包含 PrinterPrinterDriverPrinterPortPrintJob 等一系列 cmdlet,几乎覆盖了打印机生命周期的所有管理场景。结合 PowerShell 的远程执行能力,可以轻松实现集中化的打印服务管理。

本文将从基础安装配置、批量部署映射、监控故障排查三个层面,介绍如何使用 PowerShell 构建一套完整的打印机管理方案。

阅读更多

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

适用于 PowerShell 7.0 及以上版本

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

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

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

阅读更多

PowerShell 技能连载 - Azure 托管标识与无密码认证

适用于 PowerShell 7.0 及以上版本

在云环境中,服务之间的认证一直是个令人头疼的问题。传统做法是创建服务主体(Service Principal),然后把客户端 ID 和密钥硬编码在配置文件或环境变量里。这些密码一旦泄露,攻击者就能以该身份访问你的 Azure 资源。更糟糕的是,密码有有效期,过期了服务就会中断,而定期轮换密码本身就是一项繁琐的运维负担。

Azure 托管标识(Managed Identity)从根本上解决了这个问题。它为 Azure 资源自动提供一个由 Azure AD(现称 Microsoft Entra ID)管理的标识,应用程序无需管理任何凭据就能获取 OAuth 2.0 令牌来访问支持 Azure AD 认证的服务。系统分配的托管标识与资源生命周期绑定,资源删除时标识自动回收;用户分配的托管标识则可以共享给多个资源使用。

本文将演示如何通过 PowerShell 完成托管标识的全生命周期管理:从启用标识、分配权限,到实际访问 Key Vault、Storage 和 SQL Database,最后展示虚拟机和容器中的令牌获取方式。让你从”到处藏密码”的窘境中彻底解脱出来。

阅读更多

PowerShell 技能连载 - 懒人运维工具集

适用于 PowerShell 5.1 及以上版本

每个系统管理员都有一套自己的”小抄”——那些在日常工作中反复使用的命令和脚本片段。你可能在记事本里存着几十条命令,也可能在浏览器书签栏里堆满了技术博客链接。这些零散的知识虽然有用,但真正遇到问题时,往往要花不少时间才能找到那条”正好管用”的命令。

PowerShell 的强大之处在于,几乎所有的系统管理操作都可以用一行命令或短脚本完成。与其每次都去搜索引擎翻找答案,不如把这些高频操作整理成一个”懒人工具集”——需要什么直接拿来用,省下的时间可以用来喝咖啡或者研究更有趣的技术。

本文收集了系统信息速查、文件管理快捷操作、日常运维一键脚本三大类实用代码片段。每个片段都可以独立运行,也可以根据你的实际需求自由组合。准备好你的终端,让我们开始吧。

阅读更多

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

适用于 PowerShell 7.0 及以上版本

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

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

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

阅读更多

PowerShell 技能连载 - 组策略自动化管理

适用于 PowerShell 5.1 及以上版本,需要 GroupPolicy 模块

组策略(Group Policy)是 Windows 域环境中管理配置和安全设置的核心机制。通过 GPO,管理员可以集中控制数千台计算机的注册表设置、安全策略、软件部署和脚本执行。在大型企业环境中,GPO 数量往往达到数百甚至上千个,涵盖安全基线、合规要求、桌面标准化等多个维度。

手动管理这些 GPO 不仅耗时,而且极易出错——一个配置遗漏可能导致全公司的安全防线出现缺口。传统的图形界面操作(GPMC)在面对批量创建、迁移、审计等场景时显得力不从心,尤其当组织需要在不同域或林之间迁移策略时,手动操作几乎不可行。

PowerShell 的 GroupPolicy 模块提供了完整的 GPO 生命周期管理能力,从创建、编辑、备份、还原到合规报告,全部可以通过脚本自动化完成。结合 ActiveDirectory 模块,还能实现基于组织单元(OU)结构的智能策略分配和变更追踪,让组策略管理变得可重复、可审计、可回溯。

阅读更多
PowerShell 技术 QQ 群