현재 ReportServer 데이터베이스에서 RDL 파일 집합을 가져 와서 각 .RDL (XML 파일)을 반복하고 각 텍스트 상자의 값을 RDL로 작성합니다 파일 (또는이 시점에서 화면에만 표시).PowerShell을 사용하여 .RDL 파일에서 TextBox 값 가져 오기
데이터베이스에서 파일을 가져올 수 있으며 각 파일을 반복 할 수는 있지만 각 테이블의 모든 텍스트 값을 일관되게 가져올 수는 없습니다. 때때로 테이블을 건너 뜁니다. 초기 시도는 매우 기본적인 RDL 파일에서 수행되었습니다. 아래 예제는 헤더 행의 텍스트 상자 이름을 가져 오는 것입니다.
$FilePath = "C:\XML\Report.rdl"
[System.Xml.XmlDocument]$RDLFile = New-Object system.Xml.XmlDocument
$RDLFile.load($FilePath)
clear
foreach($textbox in $RDLFile.Report.Body.ReportItems.Table.Header.TableRows.TableRow.TableCells.TableCell)
{
$textboxname = $textbox.ReportItems.Textbox.Name
Write-Host($textboxname)
}
이 RDL은 단일 3 열 데이터 그리드가있는 간단한 RDL이었습니다. 더 복잡한 보고서에서 같은 방법을 시도하면 폭탄이 터지거나 일부 필드 만 잡습니다.
http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.selectnodes.aspx
그것은 당신은 내가 위의 시도
$FilePath = "C:\XML\Report.rdl"
[System.Xml.XmlDocument]$RDLFile = New-Object system.Xml.XmlDocument
$RDLFile.load($FilePath)
$TableNames = $RDLFile.SelectNodes("//ReportItems/Textbox/Name")
foreach($textbox in $TableName){
$textbox
##Or $textbox.attribute if trying to pull an attribute
}
점 표기법보다 더 쉬울 수는 XPath를 선택 드리겠습니다 : 작동 할 수 있습니다
'[XML] $ RDLFile = GC "C : \ XML \ Report.rdl"'같은 것을 할 수 없습니까? – TheMadTechnician
물론, 문제를 해결하기 위해 아무 것도하지 않습니다. –
죄송합니다. 일반적으로 스크립트에 대한 의견 일뿐입니다. 전혀 답변이 아닙니다. – TheMadTechnician