[玩转系统] PowerShell XML |了解 PowerShell 中的 XML 是如何工作的?
作者:精品下载站 日期:2024-12-14 04:47:35 浏览:14 分类:玩电脑
PowerShell XML |了解 PowerShell 中的 XML 是如何工作的?
PowerShell XML 简介
可扩展标记语言 (XML) 是一种类似于 HTML 的软轻量级标记语言,它定义了一组规则,用于以人类可读和机器可读的格式对文档进行编码,并用于存储和传输数据。这种语言是自描述性的,因此 PowerShell 通常使用 XML 来从网页检索数据、修改内容并将其发布回网站,甚至许多应用程序配置都是 XML 格式,以便于应用程序处理数据机器可以轻松地被人类理解和修改。
语法
XML 格式:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child>
<subchild>.....</subchild>
</child>
</root>
Select-XML cmdlet 语法:
Select-Xml
[-Xml] <XmlNode[]>
[-Path] <String[]>
-LiteralPath <String[]>
-Content <String[]>
[-XPath] <String>
[-Namespace <Hashtable>]
[<CommonParameters>]
ConvertTo-XML 语法:
ConvertTo-Xml
[-Depth <Int32>]
[-InputObject] <PSObject>
[-NoTypeInformation]
[-As <String>]
[<CommonParameters>]
XPath 语法:
这不仅适用于 PowerShell,而且是全局 XPath 语法,并且 XPath 是 XSLT 标准中的主要元素。 XPath 对于从 XML 文件检索数据非常有帮助。
Expression描述
NodeName选择名称为“NodeName”的所有节点
/从根节点选择
//从整个文档中选择带有该标签的节点
.选择当前节点
..选择当前节点的父节点
@选择属性
PowerShell 中的 XML 如何工作?
PowerShell 可以非常有效地处理 XML 文件。 PowerShell 有两种从 XML 文件检索数据的方法。
- XPath
- 点法。
为了将文件转换为 XML,
- 转换为 XML
在开始进一步解释之前,我们将在本文中使用 Microsoft 的示例文件 (Books.xml) 来读取 XML 数据。
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms762271(v=vs.85)?redirectedfrom=MSDN
1. 从 XML 文件中检索数据
- 加载 XML 文件
要将 XML 文件加载到 PowerShell 中,我们可以使用 First Get-Content 命令,然后将其类型转换为 XML,如下所示。
$file = [XML](Get-Content C:\Temp\SampleXML.xml)
或者
[XML]$file = Get-Content C:\Temp\SampleXML.xml
您还可以通过创建 XML 对象类型然后加载 XML 文件来加载 XML。例如,
$xml = New-Object -TypeName XML
$xml.Load('C:\Temp\SampleXML.xml')
$xml.Load('C:\Temp\SampleXML.xml')
在上述情况下,您将得到如下输出,
输出:
要检查 XML 操作支持哪些方法,可以使用 Get-Member 命令检查方法,如下所示。
$xml | Get-Member
a. XPath方法
要使用 XPath 方法,我们可以使用语法部分中显示的表。首先,要从整个文档中检索单个节点的数据,我们可以使用以下命令语法。
$xml.SelectNodes("//NodeName")
在此示例中,我们有书籍、作者、标题、流派等节点。我们可以选择其中任何一个。
$file.SelectNodes('//genre')
输出:
请注意,XML 操作区分大小写。
要选择单个节点,我们可以使用 SelectSingleNode() 方法。
$xml.SelectSingleNode('//title')
这将从第一个节点选择数据。要选择不同的节点,我们需要提供数组编号。在 PowerShell 中,数组以 [0] 开头,但在 XML 中,它以数字 1、2、3 等开头。
$xml.SelectSingleNode('//catalog/book[2]')
上述命令将从主目录中选择第 2 本书。
输出:
选择以下节点。
也可以不指定父节点,直接使用该命令。
$xml.SelectSingleNode('//book[2]')
要使用获取上述输出,我们还可以使用 Select-XML 命令,其工作方式与上述命令相同。例如,
Select-Xml -Xml $xml -XPath "//catalog/book[2]" | Select -ExpandProperty Node
输出:
您还可以进一步扩展,如下所示。
$xml.SelectSingleNode('//catalog/book[2]/author')
输出:
b.点法
这种方法是众所周知的,我们每天都在 PowerShell 中使用。我们已经在本节开头加载了 XML 文档。我们现在将使用 Dot 方法。
以下命令将从 XML 文档中检索第 2 本书。
这是我们的示例 XML 文档。
PS C:\> $xml
xml catalog
--- -------
version="1.0" catalog
Command to retrieve book number:2
$xml.catalog.book[2]
输出:
2. 转换为XML文件
要将任何可能的输出转换为 XML,您可以使用 ConvertTo-XML 命令。
$services = Get-Service | ConvertTo-Xml
$services = Get-Service | ConvertTo-Xml
$services
输出:
为了进一步扩展,我们可以使用任何方法(Xpath 或 Dot 方法)。例如,
$services.Objects.Object[1] | Select -ExpandProperty Property
输出:
示例
以下是下面提到的示例
1. 加载XML的全部内容
使用以下命令加载整个 XML
$xml = [xml](Get-Content C:\Temp\SampleXML.xml)
$xml.SelectNodes('/catalog') | Select -ExpandProperty Book
输出:
2. 搜索特定属性
要搜索特定属性,我们可以使用以下命令。它将搜索图书 ID“bk112”。
$xml.SelectNodes('//catalog/book') | where{$_.id -eq 'bk112'}
输出:
3. 使用点法查找属性
上面的例子也可以通过Dot方法来写,如下所示。
$xml.catalog.book |where{$_.id -eq "bk112"}
输出:
4. 在文件中添加新元素
我们将把新元素添加到现有文件中。
$file = 'C:\Temp\SampleXML.xml'
$xml = [xml](Get-Content $file)
以下命令将在 XML 文件中创建一个名为“Book1”的新元素。
$newelement = $xml.CreateElement("Book1")
$newelement
输出:
创建后,第二个任务是将其附加到现有文档中。
$xml.catalog.AppendChild($newelement)
输出:
添加元素后,下一步是使用以下命令保存文件。
$xml.Save($file)
现在让我们测试一下新元素是否出现在 XML 文档中。
$xml.catalog
输出:
5.创建新节点并设置其属性
在此示例中,我们将添加一本新书,名称为“XML 简介”,代码如下。
$file = "C:\temp\SampleXML.xml"
$xml = [xml](Get-Content $file)
$newbookelement = $xml.catalog.AppendChild($xml.CreateElement("book"))
$newbookelement.SetAttribute("id","bk113")
$newAuthorelement = $newbookelement.AppendChild($xml.CreateElement("author"))
$newAuthorelement.AppendChild($xml.CreateTextNode("Dan Harley")) | Out-Null
$newtitleelement = $newbookelement.AppendChild($xml.CreateElement("title"))
$newtitleelement.AppendChild($xml.CreateTextNode("XML Introduction")) | Out-Null
$xml.Save(($file))
输出:
您还可以在 XML 文件中检查相同内容。
结论
XML 文件是提供配置数据的最佳方式。大多数应用程序使用 XML 文件进行配置,甚至与 RestAPI 方法进行交互,许多网站都使用 XML 作为 API 输出。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag