PowerShell 技能连载 - 系统信息采集

适用于 PowerShell 5.1 及以上版本(Windows)

系统信息采集是运维工作的基础——新服务器上架时的资产登记、故障排查时的环境确认、容量规划时的硬件盘点、合规审计时的配置核查。PowerShell 通过 CIM/WMI、.NET 类和注册表,可以获取几乎所有的系统信息:硬件配置、操作系统详情、网络设置、已安装软件、驱动版本等。

本文将讲解如何高效采集系统信息,并生成可用的资产报告。

阅读更多

PowerShell 技能连载 - XML 高级处理

适用于 PowerShell 5.1 及以上版本

虽然 JSON 已经成为现代应用配置的主流格式,但 XML 仍然在许多场景中扮演重要角色——Windows 配置文件(.config)、NuGet 包定义(.nuspec)、SOAP Web 服务、Office 文档(.docx/.xlsx 底层是 XML)、以及大量遗留系统的数据交换格式。PowerShell 通过 [xml] 类型加速器和 .NET 的 System.Xml 命名空间,提供了强大的 XML 处理能力。

本文将讲解 XML 文档的创建、查询(XPath)、修改,以及与常见 XML 格式的交互。

阅读更多

PowerShell 技能连载 - 环境变量管理

适用于 PowerShell 5.1 及以上版本

环境变量是操作系统级别的配置机制,几乎影响所有程序的行为——PATH 决定命令搜索路径、JAVA_HOME 指定 Java 运行时、HTTP_PROXY 配置代理。在运维场景中,合理管理环境变量可以控制程序行为、隔离开发/测试/生产环境配置、管理工具链路径。PowerShell 对环境变量的操作比 CMD 更加强大和直观。

本文将讲解 PowerShell 中环境变量的读取、设置、持久化,以及实用的配置管理技巧。

阅读更多

PowerShell 技能连载 - 异步编程模式

适用于 PowerShell 5.1 及以上版本,并行功能需要 PowerShell 7

运维脚本经常面临 IO 等待——网络请求、文件操作、数据库查询,这些操作的响应时间往往远超 CPU 处理时间。如果顺序执行 100 个 HTTP 健康检查,每个耗时 1 秒,总共需要 100 秒;但如果并发执行,可能只需要几秒。PowerShell 提供了多种异步编程机制:后台作业(Jobs)、运行空间(Runspaces)、ForEach-Object -Parallel、以及 .NET 的异步 API。

本文将讲解 PowerShell 中的异步编程模式及其适用场景。

阅读更多

PowerShell 技能连载 - 管道高级技巧

适用于 PowerShell 5.1 及以上版本

管道(Pipeline)是 PowerShell 最核心的设计理念——不同于 Unix Shell 的文本管道,PowerShell 传递的是完整的 .NET 对象。这意味着管道中的每个命令都可以访问对象的属性和方法,无需正则表达式解析。然而,很多用户只停留在 | Format-Table 的层面,不了解管道的流式处理特性、自定义管道函数、管道变量等高级功能。

本文将深入讲解 PowerShell 管道的高级技巧和性能优化。

阅读更多

PowerShell 技能连载 - 日期时间高级操作

适用于 PowerShell 5.1 及以上版本

日期时间处理在运维脚本中无处不在——日志时间戳解析、定时任务调度、报表周期计算、服务运行时间监控、跨时区协作。PowerShell 基于 .NET 的 DateTimeTimeSpan 类型,提供了丰富的时间操作能力。但时区转换、UTC 处理、文化格式化等场景容易出错,需要掌握一些关键技巧。

本文将讲解 PowerShell 中日期时间的高级操作和常见陷阱。

阅读更多

PowerShell 技能连载 - 字符串操作进阶

适用于 PowerShell 5.1 及以上版本

字符串处理是脚本语言最核心的能力之一。虽然 PowerShell 的字符串基础操作大家都会,但很多高效技巧并不为人熟知——比如 -f 格式化操作符、多行 Here-String 的高级用法、StringBuilder 的大批量拼接、编码转换、Base64 处理等。掌握这些进阶技巧,可以大幅简化文本处理任务。

本文将讲解 PowerShell 字符串操作的高级技巧和实用场景。

阅读更多

PowerShell 技能连载 - 类型加速器与 .NET 互操作

适用于 PowerShell 5.1 及以上版本

PowerShell 构建在 .NET 之上,这意味着你可以直接使用 .NET 的全部类库——从文件操作到加密算法,从网络编程到并行处理。但很多用户不知道的是,PowerShell 提供了大量”类型加速器”(Type Accelerator),让你可以用简短的名称代替冗长的命名空间路径。比如 [xml] 实际上是 [System.Xml.XmlDocument][mailaddress][System.Net.Mail.MailAddress]

本文将讲解常用的类型加速器、.NET 类的直接调用,以及一些通过 .NET 互操作实现的高级功能。

阅读更多

PowerShell 技能连载 - 哈希表与字典深入

适用于 PowerShell 5.1 及以上版本

哈希表(Hashtable)是 PowerShell 中使用频率最高的数据结构之一——从 ConvertFrom-Json 的输出到 Invoke-Command 的参数,从配置管理到缓存系统,哈希表无处不在。然而,很多用户只会基本的键值操作,不了解有序字典、大小写敏感性、嵌套结构、线程安全字典等高级特性。深入理解这些特性,可以写出更高效、更优雅的代码。

本文将系统讲解 PowerShell 中哈希表和相关字典类型的用法与最佳实践。

阅读更多

PowerShell 技能连载 - 语义版本管理

适用于 PowerShell 5.1 及以上版本

版本号管理看似简单,实际在团队协作中经常引发混乱——构建号怎么递增、预发布版本怎么标记、依赖版本范围怎么声明。语义化版本(Semantic Versioning,SemVer)提供了一套清晰的规则:主版本号.次版本号.修订号,再加上可选的预发布标记和构建元数据。PowerShell 模块本身使用版本号管理,掌握 SemVer 的操作技巧,对模块发布、依赖管理和发布流程自动化都很重要。

本文将讲解如何在 PowerShell 中解析、比较、操作语义化版本号,以及自动化版本管理的实用技巧。

阅读更多
PowerShell 技术 QQ 群