рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИред рд╡рд┐рдХрд╛рд╕ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╕рд░реНрд╡рд░ (рдЖрд░рдбреАрдкреА) рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд▓реЙрдЧрд┐рди рдХреЗ рдмрд┐рдирд╛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред рд╕рд╛рде рд╣реА, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдПрдХрд▓ рдмреВрдЯрд▓реЛрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рдХреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╣рдордиреЗ PsGet
[1] рдЬреИрд╕рд╛ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдПред
рдЖрд╡реЗрджрди рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдПрд╕рдПрд╕рдЖрд░рдПрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рд╣реИред
рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Microsoft рдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ ReportingService2005.asmx рд╡реЗрдм рд╕реЗрд╡рд╛
[2] рдкреНрд░рджрд╛рди рдХреА ред
рдкреНрд░реАрд╕реЗрдЯ
рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдореЗрдВ рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА (рдЬреИрд╕реЗ рдХрдиреЗрдХреНрд╢рди рдкрд╛рд╕рд╡рд░реНрдб) рд╣реЛ рд╕рдХрддреА рд╣реИред
рдирддреАрдЬрддрди, рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд╕рд╛рде рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рд╡рд┐рддрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрд╢рди
PowerShell 2.0, New-WebServiceProxy рдХрдорд╛рдВрдб
[3] рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓ [рек] рдкрд░ рд╕реЗрд╡рд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рдмрддрд╛рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╣рдо Windows рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рд╣рдо рдкреНрд░рдореБрдЦ UseDefaultCredential рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗред рд╕реНрд╡рдпрдВ рд╕реЗрд╡рд╛ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ, рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреА рд╣реЛрдЧреАред
function Connect-ReportingService([string]$ssrsHost) { $reportingServiceUrl = $ssrsHost + "ReportService2005.asmx?wsdl" $reportingService= New-WebServiceProxy $reportingServiceUrl -UseDefaultCredential -namespace ReportingWebService $reportingService.UseDefaultCredentials = $true $reportingService }
$ SsrsHost рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╡рд╣ рдкреВрд░реНрдг рдкрде рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИ (рдЖрдорддреМрд░ рдкрд░
servername / ReportServer )ред
рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рдирд╛
рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдпрд╛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CreateReport рдкрджреНрдзрддрд┐ рд╣реИ
[5] ред
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ, рдореВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо (рдлрд╝реЛрд▓реНрдбрд░ рдЖрдкрдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐рдпрд╛рдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ), рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ, рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг (рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, рдЖрдк $ null рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддреА рд╣реИред
рдЗрдирдореЗрдВ рд╕реЗ, рд╣рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░реЗрдВрдЧреЗред
рдХреЙрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
(Connect-ReportingService $ssrsHost).CreateReport($report, $ssrsFolder, $true, $reportBits, $null)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
function Deploy-Report([string]$ssrsHost, [string]$reportDir, [string]$report, [string]$ssrsFolder) { <# , ( ) #> $relativeReportLocation = "..\RS\$($report).rdl" # if (-not (Test-Path $reportFile)) { $message = "Report file '{0}' was not found!" -f $reportFile Write-Warning $message return } # [byte[]]$reportBits = [System.IO.File]::ReadAllBytes($reportFile) # , $warnings = (Connect-ReportingService $ssrsHost).CreateReport($report, $ssrsFolder, $true, $reportBits, $null) # "" $cleanedWarnings = $warnings | ? { -not $_.Message.Contains("data source") } # ( ) if(!$cleanedWarnings) { $result = "Report '{0}' published successfully with no warnings" -f $report Write-Host $result Write-Host "" } else { $warningHeader = "Report '{0}' published with warnings: " -f $report Write-Host $warningHeader $cleanedWarnings | % { Write-Warning $_.Message } Write-Host "" } }
рдирд┐рд╖реНрдХрд░реНрд╖
рдкреНрд░рд╕реНрддреБрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХрд▓ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдорд╛рди рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
ls "..\RS\*.rdl") | % { $_.Name.Replace(".rdl", "") } | % { Deploy-Report $ssrsHost $reportDir $report $ssrsFolder }
PowerShell рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИред
SSRS рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CreateDataSource рдкрджреНрдзрддрд┐
[6] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдЬреЛрдбрд╝рдирд╛ / рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ред
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред
рддреЛ, рдЖрдк рдЕрдВрддрд┐рдо рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╢реЛрдзрди
[7] рдХреЗ рд╕рдордп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд┐рдкреЛрд░реНрдЯ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
# () $deployedReports = (Connect-ReportingService $config).ListChildren($ssrsFolder, 1) [hashtable]$deployedReportsMap = @{} $deployedReports | % { $deployedReportsMap[$_.Name + '.rdl'] = $_ } ls ) ` | ? { ( -not $deployedReportsMap.ContainsKey($_.Name)) -or $deployedReportsMap[$_.Name].ModifiedDate -lt $_.LastWriteTime } ` | % { $_.Name.Replace(, ) } ` | % { Deploy-Report $ssrsHost $reportDir $report $ssrsFolder }
рдХрднреА-рдХрднреА рдХрд┐рд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП SetItemDataSources рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдХреНрд╕рд░, рдЖрдкрдХреЛ рд░рд┐рдкреЛрд░реНрдЯ (FlushCache рд╡рд┐рдзрд┐) рд╕реЗ рдХреИрд╢ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рд╣реИред
- psget.net
- msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.aspx
- technet.microsoft.com/en-us/library/dd315258.aspx
- www.w3.org/TR/wsdl
- msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.createreport.aspx
- msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.createdatasource.aspx
- ListChildren рд╡рд┐рдзрд┐: msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.listchildren.aspx