Functions/CatalogItems/Get-RsDeploymentConfig.ps1
function Get-RsDeploymentConfig { <# .SYNOPSIS This script retrieves a list of deployment configurations from a Reporting Services project file. .DESCRIPTION This function This script retrieves a list of deployment configurations from a Reporting Services project file for deployment to a Power BI Report Server. .PARAMETER RsProjectFile Specify the location of the SSRS project file whose deployment profiles should be fetched. .PARAMETER ConfigurationToUse Specify which configuration to use from the SSRS project file, if you already know it's name. .EXAMPLE Get-RsDeploymentConfig -RsProjectFile 'C:\Users\Aaron\source\repos\Finance\Financial Reports\SSRS_FR\SSRS_FR.rptproj' Description ----------- Retrieves all deployment profiles from the SSRS_FR.rptproj file and allows the user to choose which deployment configuration to use. Then returns an object with all applicable settings from that deployment configuration. .EXAMPLE $RSConfig = Get-RsDeploymentConfig -RsProjectFile 'C:\Users\Aaron\source\repos\Financial Reports\SSRS_FR\SSRS_FR.rptproj' Description ----------- Retrieves all deployment profiles from the SSRS_FR.rptproj file and allows the user to choose which deployment configuration to use. After the selection is made, the applicable settings are stored in the $RSConfig variable. .EXAMPLE $RSConfig = Get-RsDeploymentConfig -RsProjectFile 'C:\Users\Aaron\source\repos\Financial Reports\SSRS_FR\SSRS_FR.rptproj' -ConfigurationToUse Dev01 $RSConfig | Add-Member -PassThru -MemberType NoteProperty -Name ReportPortal -Value 'http://localhost/PBIRSportal/' $RSConfig | Deploy-RsProject Retrieves all deployment settings for the 'Dev01' deployment configuration, adds a NoteProperty for the ReportPortal to deploy to, and then deploys all the project files by calling Deploy-RsProject and passing in all the settings in the $RSConfig variable. #> param ( [Parameter(Mandatory = $true)] [string]$RsProjectFile, [Parameter(Mandatory = $false)] [string]$ConfigurationToUse ) if($ConfigurationToUse){ [XML]$rptproj = Get-Content $RsProjectFile $Deployment = $rptproj.Project.PropertyGroup | where { $_.FullPath -eq $ConfigurationToUse } $RSConfig = [pscustomobject]@{ FullPath = $Deployment.FullPath OverwriteDatasets = $Deployment.OverwriteDatasets OverwriteDataSources = $Deployment.OverwriteDataSources TargetReportFolder = ($Deployment.TargetReportFolder).Trimend("/") TargetDatasetFolder = ($Deployment.TargetDatasetFolder).Trimend("/") TargetDatasourceFolder = ($Deployment.TargetDatasourceFolder).Trimend("/") TargetReportPartFolder = ($Deployment.TargetReportPartFolder).Trimend("/") TargetServerURL = $Deployment.TargetServerURL RsProjectFolder = Split-Path -Path $RsProjectFile } return $RSConfig } else{[XML]$rptproj = Get-Content $RsProjectFile $ConfigurationToUse = $rptproj.Project.PropertyGroup.FullPath | ogv -PassThru $Deployment = $rptproj.Project.PropertyGroup | where { $_.FullPath -eq $ConfigurationToUse } $RSConfig = [pscustomobject]@{ FullPath = $Deployment.FullPath OverwriteDatasets = $Deployment.OverwriteDatasets OverwriteDataSources = $Deployment.OverwriteDataSources TargetReportFolder = ($Deployment.TargetReportFolder).Trimend("/") TargetDatasetFolder = ($Deployment.TargetDatasetFolder).Trimend("/") TargetDatasourceFolder = ($Deployment.TargetDatasourceFolder).Trimend("/") TargetReportPartFolder = ($Deployment.TargetReportPartFolder).Trimend("/") TargetServerURL = $Deployment.TargetServerURL RsProjectFolder = Split-Path -Path $RsProjectFile } return $RSConfig } } |