Select-Xml
XML 문자열 또는 문서에서 텍스트를 찾습니다.
구문
Select-Xml
[-XPath] <string>
[-Xml] <XmlNode[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Select-Xml
[-XPath] <string>
[-Path] <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Select-Xml
[-XPath] <string>
-LiteralPath <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Select-Xml
[-XPath] <string>
-Content <string[]>
[-Namespace <hashtable>]
[<CommonParameters>]
Description
cmdlet Select-Xml
을 사용하면 XPath 쿼리를 사용하여 XML 문자열 및 문서에서 텍스트를 검색할 수 있습니다.
XPath 쿼리를 입력하고 Content, Path 또는 Xml 매개 변수를 사용하여 검색할 XML을 지정합니다.
예제
예제 1: AliasProperty 노드 선택
이 예제에서는 .의 Types.ps1xml
별칭 속성을 가져옵니다. 이 파일에 대한 자세한 내용은 about_Types.ps1xml을 참조 하세요.
첫 번째 명령은 파일 경로를 변수에 Types.ps1xml
$Path
저장합니다.
두 번째 명령은 변수의 AliasProperty 노드 $XPath
에 XML 경로를 저장합니다.
cmdlet은 Select-Xml
파일에서 XPath 문으로 식별되는 AliasProperty 노드를 Types.ps1xml
가져옵니다. 이 명령은 파이프라인 연산자(|
)를 사용하여 AliasProperty 노드를 cmdlet으로 Select-Object
보냅니다. ExpandProperty 매개 변수는 Node 개체를 확장하고 Name 및 ReferencedMemberName 속성을 반환합니다.
$Path = "$Pshome\Types.ps1xml"
$XPath = "/Types/Type/Members/AliasProperty"
Select-Xml -Path $Path -XPath $Xpath | Select-Object -ExpandProperty Node
Name ReferencedMemberName
---- --------------------
Count Length
Name Key
Name ServiceName
RequiredServices ServicesDependedOn
ProcessName Name
Handles Handlecount
VM VirtualSize
WS WorkingSetSize
Name ProcessName
Handles Handlecount
VM VirtualMemorySize
WS WorkingSet
PM PagedMemorySize
NPM NonpagedSystemMemorySize
Name __Class
Namespace ModuleName
결과는 파일에 있는 각 별칭 속성의 Name 및 ReferencedMemberName 을 Types.ps1xml
보여 줍니다. 예를 들어 Length 속성의 별칭인 Count 속성이 있습니다.
예제 2: XML 문서 입력
이 예제에서는 XML 매개 변수를 사용하여 cmdlet에 XML 문서를 Select-Xml
제공하는 방법을 보여줍니다.
cmdlet은 Get-Content
파일의 Types.ps1xml
내용을 가져오고 변수에 $Types
저장합니다. 변수 [xml]
를 XML 개체로 캐스팅합니다.
cmdlet은 Select-Xml
파일의 MethodName 노드를 Types.ps1xml
가져옵니다. 이 명령은 Xml 매개 변수를 사용하여 변수의 $Types
XML 콘텐츠를 지정하고 XPath 매개 변수를 사용하여 MethodName 노드의 경로를 지정합니다.
[xml]$Types = Get-Content $Pshome\Types.ps1xml
Select-Xml -Xml $Types -XPath "//MethodName"
예제 3: PowerShell 도움말 파일 검색
이 예제에서는 cmdlet을 Select-Xml
사용하여 PowerShell XML 기반 cmdlet 도움말 파일을 검색하는 방법을 보여줍니다. 이 예제에서는 각 도움말 파일의 제목으로 사용되는 cmdlet 이름과 도움말 파일의 경로를 검색합니다.
변수에는 $Namespace
도움말 파일에 사용되는 XML 네임스페이스를 나타내는 해시 테이블이 포함되어 있습니다.
변수에는 $Path
PowerShell 도움말 파일의 경로가 포함됩니다. 컴퓨터의 이 경로에 도움말 파일이 없는 경우 cmdlet을 Update-Help
사용하여 도움말 파일을 다운로드합니다. Updatable 도움말에 대한 자세한 내용은 about_Updatable_Help 참조하세요.
cmdlet은 Select-Xml
파일의 아무 곳이나 요소를 찾아 Command:Name
XML 파일에서 cmdlet 이름을 검색합니다. 결과는 변수에 $Xml
저장됩니다. Select-Xml
는 System.Xml.XmlElement 개체인 Node 속성이 있는 SelectXmlInfo 개체를 반환합니다.
Node 속성에는 검색되는 실제 XML을 포함하는 InnerXML 속성이 있습니다.
변수는 $Xml
cmdlet에 Format-Table
파이프됩니다. 이 Format-Table
명령은 계산된 속성을 사용하여 변수에 있는 $Xml
각 개체의 Node.InnerXML 속성을 가져와 텍스트 앞과 뒤의 공백을 트리밍하고 원본 파일의 경로와 함께 표에 표시합니다.
$Namespace = @{
command = "http://schemas.microsoft.com/maml/dev/command/2004/10"
maml = "http://schemas.microsoft.com/maml/2004/10"
dev = "http://schemas.microsoft.com/maml/dev/2004/10"
}
$Path = "$Pshome\en-us\*dll-Help.xml"
$Xml = Select-Xml -Path $Path -Namespace $Namespace -XPath "//command:name"
$Xml | Format-Table @{Label="Name"; Expression= {($_.node.innerxml).trim()}}, Path -AutoSize
Name Path
---- ----
Export-Counter C:\Windows\system32\WindowsPowerShell\v1.0\en-us\Microsoft.PowerShell.Commands.Diagnostics.dll-Help.xml
Get-Counter C:\Windows\system32\WindowsPowerShell\v1.0\en-us\Microsoft.PowerShell.Commands.Diagnostics.dll-Help.xml
Get-WinEvent C:\Windows\system32\WindowsPowerShell\v1.0\en-us\Microsoft.PowerShell.Commands.Diagnostics.dll-Help.xml
Import-Counter C:\Windows\system32\WindowsPowerShell\v1.0\en-us\Microsoft.PowerShell.Commands.Diagnostics.dll-Help.xml
Add-Computer C:\Windows\system32\WindowsPowerShell\v1.0\en-us\Microsoft.PowerShell.Commands.Management.dll-Help.xml
Add-Content C:\Windows\system32\WindowsPowerShell\v1.0\en-us\Microsoft.PowerShell.Commands.Management.dll-Help.xml
Checkpoint-Computer C:\Windows\system32\WindowsPowerShell\v1.0\en-us\Microsoft.PowerShell.Commands.Management.dll-Help.xml
...
예제 4: XML을 입력하는 다양한 방법
이 예제에서는 cmdlet에 XML Select-Xml
을 보내는 두 가지 방법을 보여줍니다.
첫 번째 명령은 변수에 XML이 포함된 here 문자열을 $Xml
저장합니다. 여기 문자열에 대한 자세한 내용은 about_Quoting_Rules 참조하세요.
Select-Xml
는 Content 매개 변수를 사용하여 변수에서 XML을 지정합니다$Xml
.
세 번째 명령은 tt가 파이프라인 연산자(|
)를 사용하여 변수 Select-Xml
의 XML $Xml
을 cmdlet으로 보내는 것을 제외하고 두 번째 명령과 동일합니다.
$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>
"@
Select-Xml -Content $Xml -XPath "//edition" | foreach {$_.node.InnerXML}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
$Xml | Select-Xml -XPath "//edition" | foreach {$_.node.InnerXML}
En.Book1.com
Ge.Book1.Com
Fr.Book1.com
Pl.Book1.com
예제 5: 기본 xmlns 네임스페이스 사용
이 예제에서는 기본 xmlns 네임스페이 Select-Xml
스를 사용하는 XML 문서와 함께 cmdlet을 사용하는 방법을 보여 줍니다. 이 예제에서는 Windows PowerShell ISE 사용자가 만든 코드 조각 파일의 제목을 가져옵니다. 코드 조각에 대한 자세한 내용은 New-IseSnippet을 참조하세요.
변수에는 $SnippetNamespace
XML 파일 조각에서 사용하는 기본 네임스페이스에 대한 해시 테이블이 포함되어 있습니다. 해시 테이블 값은 조각 XML의 XMLNS 스키마 URI입니다. 해시 테이블 키 이름인 스니프는 임의입니다. 예약되지 않은 이름은 사용할 수 있지만 xmlns를 사용할 수는 없습니다.
cmdlet은 Select-Xml
각 코드 조각의 Title 요소 콘텐츠를 가져옵니다. Path 매개 변수를 사용하여 코드 조각 디렉터리와 Namespace 매개 변수를 지정하여 변수에 네임스페이 $SnippetNamespace
스를 지정합니다. XPath 매개 변수의 값은 .입니다snip:Title
. 결과는 노드의 ForEach-Object
InnerXml 속성 값에서 제목을 가져오는 cmdlet으로 파이프됩니다.
$SnippetNamespace = @{snip = "http://schemas.microsoft.com/PowerShell/Snippets"}
Select-Xml -Path $HOME\Documents\WindowsPowerShell\Snippets -Namespace $SnippetNamespace -XPath "//snip:Title" |
ForEach-Object {$_.Node.Innerxml}
매개 변수
-Content
검색할 XML이 포함된 문자열을 지정합니다. 문자열을 .에 파이프할 Select-Xml
수도 있습니다.
형식: | String[] |
Position: | Named |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-LiteralPath
검색할 XML 파일의 경로 및 파일 이름을 지정합니다. Path와 달리 LiteralPath 매개 변수의 값은 입력된 대로 정확하게 사용됩니다. 와일드카드로 해석되는 문자는 없습니다. 경로에 이스케이프 문자가 포함된 경우 작은따옴표로 묶습니다. 작은따옴표는 PowerShell에 문자를 이스케이프 시퀀스로 해석하지 않도록 지시합니다.
형식: | String[] |
별칭: | PSPath |
Position: | Named |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Namespace
XML에 사용되는 네임스페이스의 해시 테이블을 지정합니다. @{<namespaceName> = <namespaceValue>}
형식을 사용합니다.
XML에서 xmlns로 시작하는 기본 네임스페이스를 사용하는 경우 네임스페이스 이름에 임의의 키를 사용합니다. xmlns를 사용할 수 없습니다. XPath 문에서 각 노드 이름 앞에 네임스페이스 이름과 콜론(예: .)을 접두사로 //namespaceName:Node
지정합니다.
형식: | Hashtable |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Path
검색할 XML 파일의 경로 및 파일 이름을 지정합니다. 와일드카드 문자를 사용할 수 있습니다.
형식: | String[] |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | True |
-Xml
하나 이상의 XML 노드를 지정합니다.
XML 문서는 XML 노드의 컬렉션으로 처리됩니다. XML 문서를 파이프하는 Select-Xml
경우 각 문서 노드는 파이프라인을 통해 제공되므로 별도로 검색됩니다.
형식: | XmlNode[] |
별칭: | Node |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-XPath
XPath 검색 쿼리를 지정합니다. 쿼리 언어는 대/소문자를 구분합니다. 이 매개 변수는 필수입니다.
형식: | String |
Position: | 0 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
System.String or System.Xml.XmlNode
경로 또는 XML 노드를 이 cmdlet으로 파이프할 수 있습니다.
출력
참고
XPath는 XML 문서의 일부를 식별하도록 설계된 표준 언어입니다. XPath 언어에 대한 자세한 내용은 이벤트 선택의 XPath 참조 및 선택 필터 섹션을 참조하세요.
관련 링크
PowerShell