PowerShell 技能连载 - 密钥管理与安全存储

适用于 PowerShell 7.0 及以上版本

在日常运维和自动化脚本编写中,硬编码密码、API Key 和数据库连接字符串是最常见的安全隐患之一。一旦脚本被误提交到公开仓库或在日志中泄露,敏感信息就会直接暴露。传统的做法是用 Read-Host -AsSecureString 手动输入,但这在自动化场景中并不适用。

PowerShell SecretManagement 模块的出现改变了这一局面。它提供了一套统一的密钥管理接口,通过扩展库机制支持多种后端存储:Windows Credential Manager、本地加密文件、Azure Key Vault、KeePass、HashiCorp Vault 等。脚本代码只需面向标准 API 编写,不必关心底层密钥存储在哪里。

本文将从基础安装配置讲起,逐步展示如何构建多保管库策略,以及在 CI/CD 和自动化场景中安全使用密钥的最佳实践。

阅读更多

PowerShell 技能连载 - Crescendo 命令包装框架

适用于 PowerShell 7.0 及以上版本

在日常运维中,我们经常需要调用 kubectldockerazterraform 等命令行工具。这些工具虽然功能强大,但在 PowerShell 中使用时只能以字符串拼接的方式构造命令——没有参数补全、没有输入验证、输出是纯文本而非结构化对象,也无法通过管道传递数据。这种体验与 PowerShell 原生 cmdlet 的使用方式截然不同。

PowerShell Crescendo 是微软推出的命令包装框架,它的核心理念是”配置即代码”。通过编写一份 JSON 配置文件,你可以将任意 CLI 工具包装成符合 PowerShell 规范的高级函数:支持参数验证、管道绑定、结构化对象输出以及完整的帮助文档,而无需手写大量模板代码。

Cresceno 特别适合那些需要在团队中标准化 CLI 工具调用方式的场景。包装后的模块可以发布到 PowerShell Gallery,团队成员只需 Install-Module 即可获得一致的 PowerShell 体验。本文将从配置基础、输出处理到完整模块发布三个阶段,带你掌握 Crescendo 的核心用法。

阅读更多

PowerShell 技能连载 - Excel 自动化报表

适用于 PowerShell 5.1 及以上版本

在企业环境中,Excel 是最通用的数据交换格式之一。无论是系统运维的周报、安全审计的统计报告,还是业务分析的汇总数据,Excel 报表几乎无处不在。然而,手动从多个数据源收集信息、格式化表格、生成图表并分发报表,这个过程既耗时又容易出错。

ImportExcel 模块的出现彻底改变了这一局面。它是一个纯 PowerShell 实现的 .xlsx 文件操作库,无需安装 Microsoft Excel 即可完成读取、写入、图表生成、条件格式等操作。这意味着你可以在 Windows Server Core 甚至 Linux 服务器上运行报表生成脚本,完全不依赖 Office 组件。

本文将通过三个递进的场景,带你掌握从基础数据导入导出到自动化报表分发的完整工作流。无论你是需要将系统日志转换为可读报表,还是要定期向管理层发送格式化的运维报告,这些技巧都能帮你节省大量时间。

阅读更多

PowerShell 技能连载 - Azure 存储服务管理

适用于 PowerShell 7.0 及以上版本

Azure 存储服务是云基础设施中不可或缺的一环。无论是应用程序数据持久化、静态网站托管、大数据分析流水线,还是灾备归档,都离不开它。一个中型企业往往拥有数十个存储账户、数百个容器和海量的 Blob 对象,靠手工在 Azure 门户中逐一配置既容易出错,也难以保证一致性。

PowerShell 通过 Az.Storage 模块提供了对 Azure 存储的完整管理能力。从存储账户的创建与访问层选择,到 Blob 容器的生命周期策略,再到细粒度的访问控制和成本监控,都可以编写脚本实现自动化。对于需要跨区域部署或遵循合规要求的场景,脚本能确保每次操作都遵循相同的规范。

本文将通过三个实战场景,展示如何使用 PowerShell 高效管理 Azure 存储:首先是存储账户与 Blob 容器的批量管理,其次是文件共享与生命周期策略配置,最后是存储分析与成本监控。

阅读更多

PowerShell 技能连载 - Docker 容器管理

适用于 PowerShell 7.0 及以上版本

容器化已成为现代应用部署的主流方式。无论是微服务架构、CI/CD 流水线还是本地开发环境,Docker 都扮演着核心角色。在 Windows 和跨平台场景中,PowerShell 凭借强大的对象管道和丰富的模块生态,能够将 Docker 操作无缝融入自动化运维流程。

传统的容器管理往往依赖手动执行 docker 命令,效率低下且容易出错。而通过 PowerShell 脚本化封装,我们可以实现镜像构建的标准化、容器编排的可重复部署、以及资源清理的定时任务调度。本文将从基础操作、Docker Compose 编排和运维工具集三个维度,展示如何用 PowerShell 打造完整的容器管理方案。

掌握这些技巧后,你可以将日常的容器运维工作转化为可版本控制、可审计的自动化脚本,真正实现”基础设施即代码”的容器管理理念。

阅读更多

PowerShell 技能连载 - Windows Update 自动化

适用于 PowerShell 5.1 及以上版本

补丁管理是企业安全运维的基石。每个月的 Patch Tuesday,微软会发布数十个安全更新,涵盖操作系统、浏览器、.NET 运行时等关键组件。如果依赖手动逐台安装更新,不仅效率低下,还容易遗漏关键补丁,给攻击者留下可乘之机。

PowerShell 为 Windows Update 自动化提供了多种手段。从内置的 Microsoft.Update.Session COM 对象完成底层扫描,到社区广泛使用的 PSWindowsUpdate 模块实现批量部署,再到结合 WSUS API 编写审批流程,可以覆盖从单机到数千台服务器的全场景补丁管理需求。

本文将围绕三个核心场景展开:更新扫描与审批、批量安装与重启编排、合规报告与异常处理,帮助你构建一套完整的 Windows Update 自动化体系。

阅读更多

PowerShell 技能连载 - CI/CD 流水线集成

适用于 PowerShell 7.0 及以上版本

现代 DevOps 实践中,基础设施即代码(IaC)和自动化测试已经成为标准流程,而 CI/CD 流水线正是将这些实践落地的核心工具。无论是代码提交触发的自动测试,还是合并后自动部署到生产环境,流水线都在其中扮演着承上启下的角色。PowerShell 凭借其强大的系统管理能力和丰富的模块生态,成为了各大 CI/CD 平台中编写构建、测试和部署逻辑的理想选择。

主流 CI/CD 平台(如 GitHub Actions、Azure DevOps、Jenkins)都原生支持运行 PowerShell 脚本。这意味着团队可以用同一门语言编写本地运维脚本和流水线逻辑,减少技术栈切换带来的认知负担。同时,Pester 测试框架可以与流水线深度集成,实现代码质量门控——只有当所有测试用例通过时才允许部署继续推进。

本文将从 GitHub Actions 集成、Azure DevOps 流水线配置和通用流水线工具三个角度,展示如何用 PowerShell 构建健壮的 CI/CD 流水线。

阅读更多

PowerShell 技能连载 - REST API 开发

适用于 PowerShell 7.0 及以上版本

当我们谈论 PowerShell 与 REST API 时,通常是在讨论如何用 Invoke-RestMethod 调用外部服务。但 PowerShell 的能力不止于此——借助 .NET 的 HttpListener 类或社区开发的 Web 框架,你完全可以用 PowerShell 构建自己的 REST API 服务。

这种能力在内部工具场景中尤为实用。比如 CI/CD 流水线需要一个状态查询端点、监控系统需要一个数据聚合接口、第三方 Webhook 需要一个接收器——这些都不需要引入一整套 ASP.NET 或 Node.js 项目,几十行 PowerShell 脚本就能搞定。本文将从底层到高层,逐步演示三种方案。

阅读更多

PowerShell 技能连载 - Azure Container Apps 管理

适用于 PowerShell 7.0 及以上版本

Azure Container Apps 是微软推出的全托管无服务器容器平台,它在底层基于 Kubernetes 却将集群管理完全抽象化,让开发者无需编写 YAML 清单就能享受容器编排的好处。内置的流量分流、自动扩缩容、服务发现和 Dapr 集成,使其特别适合微服务和事件驱动型工作负载。

对于运维工程师而言,手工在 Azure 门户中点击操作不仅效率低下,也无法纳入版本控制和审计流程。通过 PowerShell 的 Az 模块,我们可以将容器应用的创建、环境配置、版本管理和扩缩容策略全部脚本化,实现真正的 GitOps 工作流。今天就来详细介绍如何用 PowerShell 完成 Azure Container Apps 的全生命周期管理。

阅读更多

PowerShell 技能连载 - 脚本版本控制与 Git

适用于 PowerShell 7.0 及以上版本

运维脚本是基础设施管理的核心资产,其重要性不亚于应用程序代码。然而现实中,很多团队的脚本文件散落在共享目录或个人电脑中,没有版本历史、没有变更追踪、没有协作机制。当脚本出现问题时,无法快速回滚到上一个稳定版本;当多人同时修改时,很容易互相覆盖、引入冲突。

Git 作为业界标准的分布式版本控制系统,为脚本管理提供了完整的解决方案。结合 PowerShell 生态中的 posh-git 模块,可以在终端中获得丰富的状态提示、Tab 补全和分支可视化,大幅提升日常操作的效率。更重要的是,通过合理的仓库结构和分支策略,可以将脚本的版本管理与 CI/CD 发布流程无缝衔接。

本文将从 Git 基础集成、脚本仓库管理策略和自动化发布流水线三个层面,展示如何用 PowerShell 构建一套完整的脚本版本控制方案。

阅读更多
PowerShell 技术 QQ 群