PowerShell 技能连载 - CSV 高级处理

适用于 PowerShell 5.1 及以上版本

CSV(逗号分隔值)是运维中最常见的数据交换格式——导出用户清单、导入配置数据、处理监控报表、批量操作清单。虽然 PowerShell 的 Import-CsvExport-Csv 命令简单易用,但面对大数据量、复杂转换、编码问题、多文件合并等场景时,需要掌握更多技巧。

本文将讲解 CSV 处理的高级技巧和实用场景。

阅读更多

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 技能连载 - Web 数据采集

适用于 PowerShell 5.1 及以上版本

运维和开发中经常需要从网页获取数据——监控服务状态页、采集系统指标、下载最新版本的工具、从内部管理平台提取报表。PowerShell 内置的 Invoke-WebRequest 可以发送 HTTP 请求并解析 HTML,结合正则表达式和 HTML 解析能力,可以高效完成大部分数据采集任务。

本文将讲解 HTTP 请求、HTML 解析、表单提交、会话管理,以及浏览器自动化技术。

阅读更多

PowerShell 技能连载 - HTML 报告生成

适用于 PowerShell 5.1 及以上版本

运维报告是沟通技术状态的桥梁——无论是每日健康检查报告、月度容量报告还是安全审计报告,格式清晰、内容直观的 HTML 报告远比纯文本或截图有效。PowerShell 的 ConvertTo-Html 命令可以将任何对象集合转为 HTML 表格,结合自定义 CSS 样式和 Here-String 模板,可以快速生成专业级的报告。

本文将讲解 HTML 报告的生成技巧、样式定制、邮件发送,以及实用的报告模板。

阅读更多

PowerShell 技能连载 - YAML 与 TOML 配置处理

适用于 PowerShell 7.0 及以上版本

YAML 和 TOML 是现代配置文件的两大主流格式。YAML 以其可读性和丰富的数据类型支持,被 Kubernetes、Docker Compose、GitHub Actions 等广泛采用;TOML 则以简洁明了著称,是 Rust、Python 项目的首选配置格式。PowerShell 原生支持 JSON 和 XML,但处理 YAML 和 TOML 需要借助第三方模块。本文将讲解如何在 PowerShell 中高效处理这两种配置格式。

阅读更多

PowerShell 技能连载 - XML 处理与配置管理

适用于 PowerShell 5.1 及以上版本

XML 是 Windows 生态中最常见的配置格式——从 web.config、app.config 到 NuGet 的 packages.config,从 WIX 安装配置到 MSBuild 项目文件,XML 无处不在。PowerShell 对 XML 有一流的内置支持,[xml] 类型加速器可以将 XML 文档直接转换为可导航的对象图,比传统的正则表达式解析简单得多。

本文将讲解 XML 的读取、查询、修改和创建,以及常见的配置文件管理场景。

阅读更多

PowerShell 技能连载 - JSON 与 YAML 配置管理

适用于 PowerShell 7.0 及以上版本

在 DevOps 和基础设施即代码的实践中,配置文件管理是核心能力。无论是应用部署、容器编排还是 CI/CD 流水线,JSON 和 YAML 格式的配置文件无处不在。PowerShell 原生支持 JSON 的读写与转换,配合 powershell-yaml 模块也能轻松处理 YAML,包括 Kubernetes 风格的多文档格式。

本文将从实际场景出发,逐步介绍如何用 PowerShell 完成 JSON 配置读取与修改、YAML 解析、Schema 验证、模板渲染以及环境配置切换。

阅读更多

PowerShell 技能连载 - XML数据处理实战

XML作为结构化数据交换标准,在PowerShell中可通过原生命令实现高效处理。

1
2
3
4
5
6
7
8
9
10
# 读取服务器配置XML
$configPath = 'servers.xml'
[xml]$xmlData = Get-Content $configPath

# 查询所有生产环境服务器
$prodServers = $xmlData.Configuration.Servers.Server | Where-Object {
$_.Environment -eq 'Production'
}

$prodServers | Format-Table Name, IPAddress, Role

XML生成与修改

  1. 创建带命名空间的XML文档:
1
2
3
4
5
6
7
8
9
10
11
12
$ns = @{ns='http://schemas.vichamp.com/config'}
$xmlWriter = New-Object System.Xml.XmlTextWriter('new_config.xml',$null)
$xmlWriter.WriteStartDocument()
$xmlWriter.WriteStartElement('ns','Configuration','http://schemas.vichamp.com/config')

$xmlWriter.WriteStartElement('Server')
$xmlWriter.WriteAttributeString('Name','web01')
$xmlWriter.WriteElementString('IP','192.168.1.101')
$xmlWriter.WriteEndElement()

$xmlWriter.WriteEndDocument()
$xmlWriter.Close()
  1. 使用Select-Xml进行复杂查询:
1
2
3
4
5
6
7
8
$result = Select-Xml -Path $configPath -XPath "//Server[@Role='Database']"
$result.Node | ForEach-Object {
[PSCustomObject]@{
Cluster = $_.ParentNode.Name
ServerName = $_.Name
Version = $_.GetAttribute('Version')
}
}

最佳实践:

  • 使用强类型[xml]加速处理
  • 通过XPath实现精准查询
  • 合理处理XML命名空间
  • 使用XMLTextWriter生成合规文档

markdown 学习路线

Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。

markdown

介绍

规范

Markdown 的基本语法较为简单,所以多家衍生出不同的扩展版本。其中由于 GitHub 网站的流行,导致 Markdown 的 GitHub 扩展版本(简称 GFM)较为流行。

以下是基本语法和各个扩展版本的语法文档原始链接:

编辑器

基于 .NET 开发,只用于 Windows,功能较齐全。GFM 风格离线编辑要收费。

MarkdownPad Screenshot

文化

PowerShell 技术 QQ 群