PowerShell 技能连载 - TCP/UDP 网络客户端

适用于 PowerShell 5.1 及以上版本

虽然 Invoke-WebRequestInvoke-RestMethod 可以处理 HTTP 请求,但很多网络协议不走 HTTP——Redis、MySQL、SMTP、自定义 TCP 协议等。通过 .NET 的 System.Net.Sockets 命名空间,PowerShell 可以直接操作 TCP/UDP Socket,实现底层网络通信。这对于端口探测、协议测试、自定义服务监控等场景非常有用。

本文将讲解 PowerShell 中的 TCP/UDP 客户端编程和实用的网络工具。

阅读更多

PowerShell 技能连载 - 服务依赖分析与启动顺序

适用于 PowerShell 5.1 及以上版本

Windows 系统中的服务并非孤立运行,许多服务之间存在依赖关系。例如,Web 服务可能依赖 IIS,IIS 又依赖 HTTP.sys 驱动服务;数据库服务可能依赖远程过程调用(RPC)和事件日志服务。当需要批量重启服务、排查启动失败或规划系统迁移时,理清服务之间的依赖链条至关重要。

手动查阅服务的”依赖”选项卡效率低下,尤其是面对多层嵌套的依赖关系时。PowerShell 可以通过 WMI 和 Get-Service 等原生命令递归遍历服务依赖树,自动生成启动顺序报告,甚至可以一键按正确顺序停止和启动一组相互依赖的服务。

本文将介绍如何使用 PowerShell 分析 Windows 服务依赖关系,并生成可视化报告和自动化启停脚本。

阅读更多

PowerShell 技能连载 - 对 CSV 执行 SQL 风格查询

适用于 PowerShell 5.1 及以上版本

在日常运维和数据处理工作中,CSV 是最常见的文件格式之一。日志导出、监控报表、资产清单等数据通常都以 CSV 形式存储。虽然 PowerShell 原生的 Import-Csv 配合 Where-ObjectSort-ObjectSelect-Object 可以完成基本的数据筛选,但当查询逻辑复杂时——多表关联、聚合统计、分组排序——原生管道写法既冗长又难以维护。

SQL 作为数据查询的标准语言,其表达力远超管道命令。借助 .NET 内置的 OleDb 或 JDBC 方式,PowerShell 可以直接对 CSV 文件执行 SQL 查询语句,从而用熟悉的 SELECT、JOIN、GROUP BY 语法完成复杂的数据分析任务,性能也比管道过滤高出不少。

本文将介绍三种在 PowerShell 中对 CSV 执行 SQL 查询的方式:OLE DB Provider、ADO.NET 内存表,以及第三方模块。

阅读更多

PowerShell 技能连载 - 会话录制与审计追踪

适用于 PowerShell 5.1 及以上版本

在企业安全合规中,”谁在什么时候执行了什么操作”是最基本也最重要的审计需求。无论是金融行业的操作审计、医疗行业的 HIPAA 合规,还是日常运维的事故排查,完整的操作记录都不可或缺。PowerShell 内置的 Start-Transcript 可以记录整个会话的输入输出,结合脚本日志(Script Block Logging)和模块日志(Module Logging),可以构建完整的审计追踪体系。

本文将讲解 PowerShell 会话录制的多种方式,以及如何构建满足安全合规要求的审计系统。

阅读更多

PowerShell 技能连载 - 对象比较与差异检测

适用于 PowerShell 5.1 及以上版本

配置漂移检测、变更审计、版本对比——运维中经常需要比较两份数据的差异。PowerShell 的 Compare-Object 可以比较两个对象集合,ConvertTo-Html 可以生成可视化的对比报告。但很多用户只会用 Compare-Object 做简单的字符串比较,不了解如何对比复杂对象属性、生成差异报告、检测配置漂移。

本文将讲解 PowerShell 中的对象比较技巧和实用的差异检测方案。

阅读更多

PowerShell 技能连载 - 数据迁移与转换技巧

适用于 PowerShell 5.1 及以上版本

在 IT 运维和开发工作中,数据迁移和格式转换是高频需求。系统升级时需要将用户数据从旧格式迁移到新格式,报表汇总时需要合并多个 CSV 文件并转换字段,跨系统对接时需要在 JSON、CSV、XML、YAML 之间来回转换。这些任务看似简单,但涉及编码问题、类型映射、空值处理、增量同步等细节时往往让人头疼。

PowerShell 内置了 ConvertTo-CsvConvertFrom-JsonConvertTo-Xml 等丰富的转换 cmdlet,配合管道操作可以快速构建 ETL(Extract-Transform-Load)流程。本文将从实际场景出发,讲解数据迁移和转换中的常用技巧。

阅读更多

PowerShell 技能连载 - SSH 隧道与端口转发

适用于 PowerShell 5.1 及以上版本

在混合环境的运维工作中,并非所有服务都暴露在公网上。数据库、内部 API、管理后台通常隐藏在跳板机或防火墙后面,直接访问需要 VPN 或复杂的网络配置。SSH 隧道(SSH Tunneling)提供了一种轻量、安全的方案,通过加密通道将远程服务映射到本地端口,无需额外的网络基础设施。

Windows 自 OpenSSH 客户端内置以来(Windows 10 1809+、Windows Server 2019+),PowerShell 脚本可以直接调用 ssh 命令建立隧道。结合 PowerShell 的进程管理能力,可以动态创建、监控和清理 SSH 隧道,实现自动化的端口转发管理。

本文将讲解 PowerShell 中 SSH 隧道的创建、管理和自动化实践。

阅读更多

PowerShell 技能连载 - 位运算与标志管理

适用于 PowerShell 5.1 及以上版本

位运算在脚本语言中往往被忽视,但在 Windows 管理中却无处不在——文件权限标志、注册表标志位、枚举类型的组合值、网络子网掩码计算。理解位运算不仅能读懂系统底层的标志值,还能编写更高效的状态管理代码。PowerShell 支持 -band(与)、-bor(或)、-bxor(异或)、-bnot(取反)等位运算符。

本文将讲解 PowerShell 中的位运算技巧和实际应用场景。

阅读更多

PowerShell 技能连载 - 通知与告警系统

适用于 PowerShell 5.1 及以上版本

运维自动化的最后一环是通知——部署完成需要告知团队、服务异常需要唤醒值班人员、磁盘满了需要及时处理。PowerShell 可以通过多种渠道发送通知:邮件(SMTP)、Webhook(Slack/Teams/钉钉)、Windows Toast 通知、甚至短信。构建统一的通知系统,让所有脚本复用同一套告警机制,是提升运维响应效率的关键。

本文将讲解 PowerShell 中的各种通知方式和统一的告警系统设计。

阅读更多

PowerShell 技能连载 - 配置管理模式

适用于 PowerShell 5.1 及以上版本

几乎所有脚本都涉及配置管理——数据库连接字符串、API 端点、超时设置、日志级别。如何存储、加载、验证、合并配置,直接影响脚本的可维护性和灵活性。硬编码的配置难以适应不同环境,缺少验证的配置导致运行时错误,没有合并机制的配置无法覆盖默认值。

本文将讲解 PowerShell 中的配置管理模式,从简单的配置文件到多层配置合并。

阅读更多
PowerShell 技术 QQ 群