티스토리 뷰

반응형

안녕하세요

이번에 제가 포스팅 할 내용은 Powershell을 이용해서 XML file을 읽고 수정하는 내용에 대해서 설명드리고자 합니다.


XML(Extensible Markup Language)은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다. XML은 문서를 사람과 기계 모두가 읽을 수 있는 형식을 갖도록 규정하고 있다.  - 위키 백과사전 참고

XML File을 이용해서 작업 시 설정을 XML을 이용해서 작업을 할 수도있다.

XML File을 편집을 할 때는 XML 편집 Tool 이나, Excel 및 메모장으로도 변경은 가능하지만, 하나씩 작업을 해야되며 수작업으로 하거나 

같은 내용이더라도 File을 덮어쓰기하는 방식으로 작업을 해야된다.


하지만,

Powershell을 이용해서 내가 원하는 Line의 값이 다른 것만 확인 후 변경을 할 수 있게 편집이 가능합니다.


1. 바꾸기를 원하는 XML File을 선택을 한다. 이번에 Test로 사용할 XML File은 PSDataSourceConfig.xml로 XML File을 확인을 한다.


2. XML File에서 C:\WindowsImageBackupD:\WindowsImageBackup 으로 바꾸고자 한다.


3. Powershell에서 XML File을 불러오기 위해서는 아래 그림과 같이 'Get-Content' 명령어를 이용을 하여 XML File을 불러올 수 있다. 보기 쉽게 하기 위해서 XML 에 대한 내용을 $data안에 담았습니다. ($data 앞이나, Command Line 앞에 [XML]을 붙여주면 XML 형식으로 Data를 인식 후 보여준다)


4. 바꾸길 원하는 Data가 있는 Line까지 가기 위해서 Powershell을 이용하여 들어가고 있다. <FileToProtect> Line이 있는 곳까지 이동을 한다.


5. 아래 그림과 같이, 바꾸길 원하는 Data는 $data.PSDatasourcesConfig.DatasourceConfig 아래에 존재를 한다. 


바꾸길 원하는 Data가 위치해 있는 곳을 알았으니, 이제 변경을 해도록 하자.


8. 바꾸고자 하는 Data에 FilesToProtect 까지 검색을 하면, 지금 경로인 'C:\WindowsImageBackup\*' 이 나오고 이걸 이용해서 변경을 하면 된다.


9. 아래 명령어를 이용해서, 기존에 있던 'FilesToProtect'를 재 정의를 해줄 수있다. (= 다음에 "    " 이 안에 원하는 값을 입력해주면 된다)


$data.PSDatasourcesConfig.DatasourceConfig.FilesToProtect = "d:\WindowsImageBackup\*"


10. 명령어를 이용해서 변경 후, Data가 변경이 되었는지 확인이 가능하다. 현재 아래와 그림과 같이 Data에 대한 내용이 변경된 것을 확인이 가능하다.

[작업 확인 내용]

11. 마지막으로 현재는 Data의 값이 Powershell에서만 변경이 되었으므로, File을 다시 저장 후 기존에 XML File을 변경해 주어야 한다.

    그러기 위해서는 아래 명령어를 이용해서 동일한 이름 or 다른 이름으로 변경된 Data를 저장을 해주어야 한다. ( Save다음 (    ) 이 안에 저장하고자 하는 경로를 넣어주면 된다.)


$data.save('C:\Program Files\Microsoft Data Protection Manager\DPM\Datasources\PSDataSourceConfig.xml')


12. 파일을 열여서 확인을 해보면, 바꾸길 원했던 "C:\WindowsImageBackup\*""D:\WindowsImageBackup\*" 으로 정상적으로 변경이 되었다.


[저장된 File에서 확인 내용]

Powershell을 이용해서 파일을 열지 않고 바로 확인 및 변경이 가능합니다.

또한, Powershell에서 사용하는 IF문, Foreach문, Invoke문 등 다양한 구문을 이용해서 기존에 있는 XML File과 대조를 하여 내용이 다르면 변경 후 저장을 하거나, File을 복사 할 수있도록 Script로 자동화 할 수있다.


그러면 추가적으로, 이 XML File을 이용해서 위에서 언급한 IF, Foreach 문을 이용해서 XML File에 특정한 Line 값이 원본이랑 같은 것이거나, 원하는 값인지 확인하는 스크립트를 만들어보자.


1. 아래 그림과 같이 스크립트를 작성을 하였으며, "FilestoProtect" Line 의 값이 "C:\WindowsImageBackup" 이면 작업 종료 아니면, 변경을 할껀지 그냥 정보만 수집할 건지 결정을 할 수있는 스크립트이다.


2. 사용한 스크립트를 원하는 곳에서 실행을 하면, Line의 값이 일치하면 아래 그림과 같이 나타나게 됩니다.


Demo에서 사용한 스크립트는 첨부 파일로 포함해 두었습니다.

쉽게 XML 편집을 하는 Tool들도 많고 수정하는 방법은 많지만, 자동화를 위해서 스크립트로 XML File을 읽고자 할 때 유용하게 사용을 할 수 있을 것 같습니다.

DemoScript.txt


이상으로 Powershell로 XML File 읽기 및 수정 포스팅을 마치겠습니다.


반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday