Select-XML

在 XML 字符串或文档中查找文本。

语法

Select-XML -Content <string[]> [-Xpath] <string> [-命名空间 <hashtable>] [<CommonParameters>]

Select-XML [-Path] <string[]> [-Xpath] <string> [-命名空间 <hashtable>] [<CommonParameters>]

Select-XML [-Xml] <XmlNode[]> [-Xpath] <string> [-命名空间 <hashtable>] [<CommonParameters>]

说明

Select-XML cmdlet 使您可以使用 XPath 查询来搜索 XML 字符串或文档中的文本。输入 XPath 查询,并使用 Content、Path 或 Xml 参数指定要搜索的 XML。

参数

-Content <string[]>

指定包含要搜索的 XML 的字符串。也可以通过管道将字符串传递给 Select-XML。

是否为必需?

true

位置?

named

默认值

是否接受管道输入?

true (ByValue)

是否接受通配符?

false

-命名空间 <hashtable>

指定 XML 中使用的命名空间的哈希表。使用格式 @{<namespaceName> = <namespaceValue>}。

是否为必需?

false

位置?

named

默认值

是否接受管道输入?

false

是否接受通配符?

false

-Path <string[]>

指定要搜索的 XML 文件的路径和文件名。允许使用通配符。

是否为必需?

true

位置?

2

默认值

是否接受管道输入?

true (ByPropertyName)

是否接受通配符?

true

-Xml <XmlNode[]>

指定一个或多个 XML 节点。每条命令中都需要 Path 或 Xml 参数。

XML 文档将作为 XML 节点的集合进行处理。如果您通过管道将 XML 文档传递给 Select-XML,则会在文档通过管道时分别搜索每个文档节点。

是否为必需?

true

位置?

2

默认值

是否接受管道输入?

true (ByValue, ByPropertyName)

是否接受通配符?

false

-Xpath <string>

指定 XPath 搜索查询。查询语言区分大小写。此参数是必需的。

是否为必需?

true

位置?

1

默认值

是否接受管道输入?

false

是否接受通配符?

false

<CommonParameters>

此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.

输入和输出

输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。

输入

System.String 或 System.Xml.XmlNode

您可以通过管道将路径或 XML 节点传递给 Select-XML。

输出

System.Xml.XmlElement 或 System.Xml.XmlText

说明

XPath 是用于识别 XML 文档的组成部分的标准语言。有关 XPath 语言的详细信息,请参阅 MSDN (Microsoft Developer Network) Library 中的“事件选择”主题的“选择筛选器”部分,网址是 https://go.microsoft.com/fwlink/?LinkId=143608。另请参阅 MSDN Library 中的“XPath 参考”,网址是 https://go.microsoft.com/fwlink/?LinkId=143609。

示例 1

C:\PS>$path = "$env:windir\System32\WindowsPowerShell\v1.0\Types.ps1xml"

C:\PS> select-xml -path $path -xpath "/Types/Type/Members/AliasProperty"

说明
-----------
此示例在 Types.ps1xml 文件中搜索 AliasProperty 节点的子项。





示例 2

C:\PS>select-xml -path test*.xml, help.xml -xpath "/Tests/Test[1]/Name"

说明
-----------
此命令使用 Select-XML 在多个 XML 文件中搜索。





示例 3

C:\PS>[xml]$Types = get-content "$env:windir\System32\WindowsPowerShell\v1.0\Types.ps1xml"

C:\PS> select-xml -xml $Types -xpath "//MethodName"

说明
-----------
此示例演示了如何通过管道将 XML 文档传递给搜索路径。





示例 4

C:\PS>$namespace = @{command="https://schemas.microsoft.com/maml/dev/command/2004/10"; maml="https://schemas.microsoft.com/maml/2004/10"; dev="https://schemas.microsoft.com/maml/dev/2004/10"}

C:\PS> $path = "$env:windir\System32\WindowsPowerShell\V1.0\en-us\*dll-Help.xml"

C:\PS> select-xml -path $path -namespace $namespace -xpath "//command:name"

Text                      Node      Path                                      
----                      ----      ----                                      
Add-Computer              name      C:\Windows\System32\WindowsPowerShell\V...
Add-Content               name      C:\Windows\System32\WindowsPowerShell\V...
Checkpoint-Computer       name      C:\Windows\System32\WindowsPowerShell\V...
Clear-Content             name      C:\Windows\System32\WindowsPowerShell\V...
Clear-EventLog            name      C:\Windows\System32\WindowsPowerShell\V...
...

说明
-----------
此示例演示了如何使用 Select-XML cmdlet 搜索 Windows PowerShell 基于 XML 的 cmdlet 帮助文件。

第一条命令创建一个表示 XML 命名空间的哈希表,并将它保存在 $namespace 变量中。

第二条命令将帮助文件的路径保存到 $path 变量中。

第三条命令使用 Select-Xml 通过查找文件中任意位置的 Command:Name 标记来搜索 XML 中的 cmdlet 名称。





示例 5

C:\PS>select-xml -content $xml -xpath "//edition"

C:\PS> $xml = @"
<?xml version="1.0" encoding="utf-8"?>
 <Book>
   <projects>
     <project name="Book1" date="2009-01-20">
       <editions>
          <edition language="English">En.Book1.com</edition>
          <edition language="German">Ge.Book1.Com</edition>
          <edition language="French">Fr.Book1.com</edition>
          <edition language="Polish">Pl.Book1.com</edition>
       </editions>
     </project>
   </projects>
 </Book>
"@

C:\PS> select-xml -content $xml -xpath "//edition"

Text            Node          Path                                      
----            ----          ----                                      
En.Book1.com    edition       InputStream                               
Ge.Book1.Com    edition       InputStream                               
Fr.Book1.com    edition       InputStream                               
Pl.Book1.com    edition       InputStream


C:\PS> $xml | select-xml -xpath "//edition"      

Text            Node          Path                                      
----            ----          ----                                      
En.Book1.com    edition       InputStream                               
Ge.Book1.Com    edition       InputStream                               
Fr.Book1.com    edition       InputStream                               
Pl.Book1.com    edition       InputStream

说明
-----------
此示例使用 Select-XML 的 Content 参数搜索 here-string 中的 XML 内容。

第一条命令将 here-string 保存在 $xml 变量中。

第二条命令使用 Content 参数指定 $xml 变量中的 XML。

第三条命令与第二条命令等效。它使用管道运算符 (|) 将 $xml 变量中的 XML 发送到 Select-XML cmdlet。

有关 here-string 的详细信息,请键入 about_Quoting_Rules。





另请参阅

概念

ConvertTo-XML