이것은 내가 XML 파일을 만들려고 한 것은 이번이 처음이다. 나는의 GPO 목록을 쿼리하고이 적용되는 GPO와 서버의 이름의 이름을 가진 XML 파일을 생성하는 스크립트를 작성하려합니다.PowerShell 및 XML 파일 생성
나는 두 가지 문제로 실행하고 있습니다 :
- XML 파일은 첫 번째 GPO로 만들었지 만 대신 많은의 "노드 이름"태그에 모든 서버를 얻을 수있다.
01 첫 번째 GPO는 XML 파일에 기록 된 후 23,516,< MasterList>
< 태그>
< TAGNAME> WSUS-ALPHA </TAGNAME>
< 노드 이름> SERVER1 SERVER2 SERVER3 SERVER4 </노드 이름>
</태그>
</MasterList>
- , 나는 나머지 다음과 같은 오류를 얻을 :
내가 코드를 사용하고있다 상단 forea의 채널 루프,하지만 그건 도움이되지 않았다.예외는 "1"인수 (들) "WriteStartElement를"호출 "작가는 닫은." 라인에서
: 3 문자 : 5
+ $ xmlWriter.WriteStartElement ('태그')
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~
+ CategoryInfo : NotSpecified (:) [] MethodInvocationException
+ FullyQualifiedErrorId : InvalidOperationException이예외 "2"인자 (들) "WriteElementString를"호출 "토큰의 startElement 상태 오류가 발생하면 잘못된 XML 문서가 생성됩니다. " 라인에서 4 문자 : 5 + $ xmlWriter.WriteElementString ('TAGNAME'$ gpo.DisplayName) + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified (:) [] MethodInvocationException + FullyQualifiedErrorId : InvalidOperationException
"2"인수로 "WriteElementString"을 호출하는 예외 : "상태 오류의 Token StartElement가 잘못된 XML 문서가됩니다." 라인에서
: 10 문자 : 13
+ $ xmlWriter.WriteElementString ('NODENAME'(-Identit ... - ADGroupMember 받기
+ ~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified (:) [] MethodInvocationException
+ FullyQualifiedErrorId : InvalidOperationException이예외 "0"인수 "WriteEndElement를"호출 (들) "어떤 XML 시작 태그가 열려 없었다."라인에서
: 13 문자 : 5
+ $ XmlWriter를.WriteEndElement()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified (:) [] MethodInvocationException
+ FullyQualifiedErrorId : InvalidOperationException"0"인수가있는 "WriteEndElement"를 호출하는 예외 : "열린 XML 시작 태그가 없습니다." 라인에서
14 문자 : 5
+ $ xmlWriter.WriteEndElement()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified : (: [], MethodInvocationException
+ FullyQualifiedErrorId :이 "0"인수 (들)과 예외 호출 "플러시는"InvalidOperationException이 : ". 폐쇄 TextWriter에 쓸 수 없습니다" 라인에서
15 문자 : 5
+ $ xmlWriter.Flush()
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified (:) [ ], MethodInvocationException
+ FullyQualifiedErrorId :$xmlFile = "c:\data-$randomnumber.xml" $xmlWriter = New-Object System.XMl.XmlTextWriter($xmlFile,$Null) $xmlWriter.Formatting = 'Indented' $xmlWriter.Indentation = 1 $xmlWriter.IndentChar = "`t" $xmlWriter.WriteStartElement('MasterList') #Get the list of GPOs that start with "wsus". $wsusGPOs = Get-GPO -All | where {$_.DisplayName -like 'wsus*'} Foreach ($gpo in $wsusGPOs) { #For each GPO that starts with "wsus", create a tag with the GPO's name. $xmlWriter.WriteStartElement('Tag') $xmlWriter.WriteElementString('TagName',$gpo.DisplayName) #Get the list of AD groups that have the "Apply" permission, in each GPO. $wsusPerms = $gpo | Get-GPPermission -All | where {$_.permission -eq 'GpoApply' -and $_.denied -eq $false} Foreach ($permsList in $wsusPerms) { If ($permsList.trustee.name -ne 'Authenticated Users') { #For each AD group that can apply the GPO, get the list of servers in the AD group. Ignores the "Authenticated Users" group. $xmlWriter.WriteElementString('NodeName',(Get-ADGroupMember -Identity $permsList.Trustee.name -Recursive).name) } } $xmlWriter.WriteEndElement() $xmlWriter.WriteEndElement() $xmlWriter.Flush() $xmlWriter.Close() }
내가 $ xmlWriter.Flush을 (이동 시도)와 $는 xmlWriter.Close은() 밖으로 명령 : 경우 ObjectDisposedException 여기
나는이 두 가지 문제가 상당히 솔직하게 해결되어야한다고 생각합니다. 어떻게 확신 할 수 없습니다. 코드 수정 방법에 대한 의견이 있으십니까?
감사합니다. 루프에서 WriteEndElement()에 호출을 추가
확실하지가 있지만,'XmlTextWriter' 생성자 문서는'닷넷 프레임 워크 2.0을 시작으로, 우리는 당신이 XmlWriter를 사용하여 XmlWriter를 인스턴스를 만드는 것이 좋습니다 말한다. 새로운 기능을 활용하기 위해 메서드와 XmlWriterSettings 클래스를 만듭니다 .' – Eris