├── .editorconfig ├── .vs ├── ProjectSettings.json └── slnx.sqlite ├── Example-Reports ├── .gitignore ├── Example-Reports.rptproj ├── SharedSanity.rsd ├── SomeDatasource.rds ├── example-db.sql └── sanity-analysis.rdl ├── LICENSE.txt ├── README.md ├── ssrs-powershell-deploy.sln └── ssrs-powershell-deploy ├── SSRS ├── Get-SSRSCredential.ps1 ├── Get-SSRSProjectConfiguration.ps1 ├── New-SSRSDataSet.ps1 ├── New-SSRSDataSource.ps1 ├── New-SSRSFolder.ps1 ├── New-SSRSReport.ps1 ├── New-SSRSWebServiceProxy.ps1 ├── New-XmlNamespaceManager.ps1 ├── Normalize-SSRSFolder.ps1 ├── Publish-SSRSProject.ps1 ├── Publish-SSRSSolution.ps1 ├── SSRS.psd1 └── SSRS.psm1 ├── Usage ├── Usage-FromCredentialFiles.ps1 └── Usage-PlainText.ps1 └── ssrs-powershell-deploy.pssproj /.editorconfig: -------------------------------------------------------------------------------- 1 | # Per-solution / project / file code formatting settings, automatically configure your preferred editor. 2 | # http://EditorConfig.org 3 | # Visual Studio plugin that reads this file: 4 | # - https://visualstudiogallery.msdn.microsoft.com/c8bccfe2-650c-4b42-bc5c-845e21f96328 5 | 6 | root = true 7 | 8 | [*] 9 | indent_style = tab 10 | insert_final_newline = true 11 | -------------------------------------------------------------------------------- /.vs/ProjectSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "CurrentProjectSetting": null 3 | } -------------------------------------------------------------------------------- /.vs/slnx.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/timabell/ssrs-powershell-deploy/e50fec64951dad7a2c57a32966191754d5c42a56/.vs/slnx.sqlite -------------------------------------------------------------------------------- /Example-Reports/.gitignore: -------------------------------------------------------------------------------- 1 | *.data 2 | -------------------------------------------------------------------------------- /Example-Reports/Example-Reports.rptproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | $base64$PFNvdXJjZUNvbnRyb2xJbmZvIHhtbG5zOnhzZD0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOmRkbDI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDAzL2VuZ2luZS8yIiB4bWxuczpkZGwyXzI9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDAzL2VuZ2luZS8yLzIiIHhtbG5zOmRkbDEwMF8xMDA9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDA4L2VuZ2luZS8xMDAvMTAwIiB4bWxuczpkZGwyMDA9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDEwL2VuZ2luZS8yMDAiIHhtbG5zOmRkbDIwMF8yMDA9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDEwL2VuZ2luZS8yMDAvMjAwIiB4bWxuczpkZGwzMDA9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDExL2VuZ2luZS8zMDAiIHhtbG5zOmRkbDMwMF8zMDA9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDExL2VuZ2luZS8zMDAvMzAwIiB4bWxuczpkZGw0MDA9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDEyL2VuZ2luZS80MDAiIHhtbG5zOmRkbDQwMF80MDA9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vYW5hbHlzaXNzZXJ2aWNlcy8yMDEyL2VuZ2luZS80MDAvNDAwIiB4bWxuczpkd2Q9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vRGF0YVdhcmVob3VzZS9EZXNpZ25lci8xLjAiPg0KICA8RW5hYmxlZD5mYWxzZTwvRW5hYmxlZD4NCiAgPFByb2plY3ROYW1lPjwvUHJvamVjdE5hbWU+DQogIDxBdXhQYXRoPjwvQXV4UGF0aD4NCiAgPExvY2FsUGF0aD48L0xvY2FsUGF0aD4NCiAgPFByb3ZpZGVyPjwvUHJvdmlkZXI+DQo8L1NvdXJjZUNvbnRyb2xJbmZvPg== 4 | 5 | 6 | SomeDatasource.rds 7 | SomeDatasource.rds 8 | 9 | 10 | 11 | 12 | SharedSanity.rsd 13 | SharedSanity.rsd 14 | 15 | 16 | 17 | 18 | sanity-analysis.rdl 19 | sanity-analysis.rdl 20 | 21 | 22 | 23 | 24 | Debug 25 | Win32 26 | 27 | bin\Debug 28 | SSRS2008R2 29 | http://localhost/Reports 30 | ssrs-powershell-deploy/Example-Reports 31 | ssrs-powershell-deploy/Data Sources 32 | ssrs-powershell-deploy/Datasets 33 | ssrs-powershell-deploy/Report Parts 34 | 35 | 36 | 37 | DebugLocal 38 | Win32 39 | 40 | bin\DebugLocal 41 | SSRS2008R2 42 | http://localhost/Reports 43 | ssrs-powershell-deploy/Example-Reports 44 | ssrs-powershell-deploy/Data Sources 45 | ssrs-powershell-deploy/Datasets 46 | ssrs-powershell-deploy/Report Parts 47 | 48 | 49 | 50 | Release 51 | Win32 52 | 53 | bin\Release 54 | SSRS2008R2 55 | http://localhost/Reports 56 | ssrs-powershell-deploy/Example-Reports 57 | ssrs-powershell-deploy/Data Sources 58 | ssrs-powershell-deploy/Datasets 59 | ssrs-powershell-deploy/Report Parts 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /Example-Reports/SharedSanity.rsd: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | SomeDatasource 6 | SELECT COUNT(*) AS madnessCount 7 | FROM reasonsToDislikeSsrs 8 | 9 | 10 | 11 | madnessCount 12 | System.Int32 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Example-Reports/SomeDatasource.rds: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | SQL 5 | Data Source=.;Initial Catalog=ssrs_deploy_example 6 | true 7 | 8 | 988a3b3b-d1a8-4923-9dd6-a62ab07c3210 9 | -------------------------------------------------------------------------------- /Example-Reports/example-db.sql: -------------------------------------------------------------------------------- 1 | create database ssrs_deploy_example; 2 | go 3 | use ssrs_deploy_example; 4 | go 5 | create table reasonsToDislikeSsrs (id int primary key identity(1,1), reason nvarchar(500)); 6 | go 7 | 8 | set nocount on; 9 | 10 | insert into reasonsToDislikeSsrs (reason) values ('for the sake of your sanity'); 11 | go 100 -- repeat the above sql 100 times 12 | -------------------------------------------------------------------------------- /Example-Reports/sanity-analysis.rdl: -------------------------------------------------------------------------------- 1 |  2 | 3 | 0 4 | 5 | 6 | SomeDatasource 7 | None 8 | 7260e8d2-ad04-494b-b302-80b2135d0178 9 | 10 | 11 | 12 | 13 | 14 | SomeDatasource 15 | SELECT id, reason 16 | FROM reasonsToDislikeSsrs 17 | 18 | 19 | 20 | id 21 | System.Int32 22 | 23 | 24 | reason 25 | System.String 26 | 27 | 28 | 29 | 30 | 31 | SharedSanity 32 | 33 | 34 | 35 | madnessCount 36 | System.Int32 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | true 47 | true 48 | 49 | 50 | 51 | 52 | Sanity analysis 53 | 68 | 69 | 70 | 71 | 72 | 73 | 1in 74 | 75 | 76 | 4in 77 | 78 | 79 | 80 | 81 | 0.21in 82 | 83 | 84 | 85 | 86 | true 87 | true 88 | 89 | 90 | 91 | 92 | id 93 | 99 | 100 | 101 | textbox2 102 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | true 115 | true 116 | 117 | 118 | 119 | 120 | reason 121 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 0.21in 141 | 142 | 143 | 144 | 145 | true 146 | true 147 | 148 | 149 | 150 | 151 | =Fields!id.Value 152 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | true 172 | true 173 | 174 | 175 | 176 | 177 | =Fields!reason.Value 178 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | After 208 | true 209 | true 210 | 211 | 212 | 213 | Detail 214 | 215 | 216 | 217 | 218 | Detail_Collection 219 | Output 220 | true 221 | 222 | 223 | 224 | EmbeddedDataSet 225 | 0.98486in 226 | 0.42in 227 | 5in 228 | 1 229 | 256 | 257 | 2pt 258 | 2pt 259 | 2pt 260 | 2pt 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 1in 272 | 273 | 274 | 275 | 276 | 0.25in 277 | 278 | 279 | 280 | 281 | true 282 | true 283 | 284 | 285 | 286 | 287 | =Sum(Fields!madnessCount.Value) 288 | 299 | 300 | 2pt 301 | 2pt 302 | 2pt 303 | 2pt 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 0.25in 322 | 323 | 324 | true 325 | true 326 | 327 | 328 | 329 | 330 | madness Count 331 | 342 | 343 | 2pt 344 | 2pt 345 | 2pt 346 | 2pt 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 1in 364 | 365 | 366 | true 367 | true 368 | 369 | 370 | 371 | 372 | 373 | 384 | 385 | 2pt 386 | 2pt 387 | 2pt 388 | 2pt 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | SanityCounter 397 | 0.41542in 398 | 0.5in 399 | 2in 400 | 2 401 | 404 | 405 | 406 | 407 | 408 | 2.1925in 409 |