PowerShell을 사용하여 XML 파일 구문 분석
Extensible Markup Language 또는 XML 형식은 오늘날에도 여전히 널리 사용됩니다. 구성 파일, RSS 피드 및 Office 파일은 XML 형식을 사용하는 몇 가지 예에 불과합니다.
Windows PowerShell을 사용하여 XML 파일을 구문 분석하는 것은 PowerShell 과정에서 필수적인 단계입니다. 이 문서에서는 Windows PowerShell을 사용하여 XML 파일을 구문 분석하는 방법에 대해 설명합니다.
PowerShell XML 요소 구문 분석
먼저 Select-XML
로 XML을 구문 분석하기 위해 PowerShell을 사용하는 가장 인기 있고 쉬운 방법 중 하나를 다루겠습니다. Select-Xml
PowerShell 명령을 사용하면 XML 파일 또는 문자열과 XPath
필터를 제공하여 특정 정보를 추출할 수 있습니다.
많은 PC에 PowerShell로 구문 분석하려는 XML 파일이 있습니다. 예를 들어 각 시스템에는 이름, IP 주소 및 보고서에서 사용할 수 있는 포함
요소가 있습니다.
예제 XML:
<Computers>
<Computer>
<Name>WINPC-01</Name>
<Ip>127.0.0.1</Ip>
<Include>true</Include>
</Computer>
<Computer>
<Name>WINPC-02</Name>
<Ip>192.168.1.105</Ip>
<Include>false</Include>
</Computer>
<Computer>
<Name>WINPC-03</Name>
<Ip>192.168.1.104</Ip>
<Include>true</Include>
</Computer>
</Computers>
PowerShell을 사용하여 이 XML 파일을 구문 분석하고 컴퓨터 이름을 가져오려고 합니다. 이를 위해 Select-XML
명령을 사용할 수 있습니다.
예를 들어 위의 파일에서 컴퓨터 이름은 Name
요소의 내부 텍스트(InnerXML
)에 나타납니다.
먼저 적절한 XPath
를 제공하여 컴퓨터 이름을 찾습니다. 이 XPath
기술을 사용하여 Computer
요소에 포함된 Name
노드만 반환됩니다.
그런 다음 ForEach-Object
루프를 사용하여 각 Name
요소의 Node.InnerXML
속성에 도달하여 해당 요소의 InnerXML
만 가져옵니다.
예제 코드:
Select-Xml -Path C:\PS\sample.xml -XPath '/Computers/Computer/Name' | ForEach-Object { $_.Node.InnerXML }
PowerShell XML 특성 구문 분석
이제 컴퓨터 이름을 찾는 새로운 접근 방식을 살펴보겠습니다. XML 요소로 표현되는 대신 컴퓨터 설명자는 XML 특성으로 직접 표현됩니다.
다음은 특성으로 표현된 컴퓨터 설명자가 포함된 예제 XML 파일입니다. 이제 각 설명자를 요소가 아닌 속성으로 볼 수 있습니다.
예제 코드:
<Computers>
<Computer name="WINPC-01" ip="127.0.0.1" include="true" />
<Computer name="WINPC-02" ip="192.168.1.104" include="false" />
<Computer name="WINPC-03" ip="192.168.1.105" include="true" />
</Computers>
각 설명자는 속성이므로 XPath
를 조정하여 Computer
요소를 찾으십시오. 그런 다음 ForEach-Object
cmdlet을 사용하여 name
특성 값을 찾습니다.
예제 코드:
Select-Xml -Path C:\Work\computers-attr.xml -XPath '/Computers/Computer' | ForEach-Object { $_.Node.name }
출력:
WINPC-01
WINPC-02
WINPC-03
요소를 읽든 속성을 읽든 Select-Xml
구문은 번거롭습니다. XPath
매개변수를 사용한 다음 결과를 루프로 파이프하고 마지막으로 Node
속성 아래에서 데이터를 찾아야 합니다. .
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn