Get-SSRSProjectConfiguration.ps1

function Get-SSRSProjectConfiguration{
    #requires -version 2.0
    [CmdletBinding()]
    param (
        [parameter(Mandatory=$true)]
        [ValidatePattern('\.rptproj$')]
        [ValidateScript({ Test-Path -PathType Leaf -Path $_ })]
        [string]
        $Path,

        [parameter(Mandatory=$true)]
        [string]
        $Configuration

    )

    $script:ErrorActionPreference = 'Stop'
    Set-StrictMode -Version Latest

    Write-Verbose "Reading '$Configuration' config from '$Path'"

    [xml]$Project = Get-Content -Path $Path

    $Config = $Project.SelectNodes('Project/Configurations/Configuration') |
        Where-Object { $_.Name -eq $Configuration } |
        Select-Object -First 1
    if (-not $Config) {
        throw "Could not find configuration $Configuration."
    }


    $OverwriteDataSources = $false
    if ($Config.Options.SelectSingleNode('OverwriteDataSources')) {
        $OverwriteDataSources = [Convert]::ToBoolean($Config.Options.OverwriteDataSources)
    }
    
    $OverwriteDatasets = $false
    if ($Config.Options.SelectSingleNode('OverwriteDatasets')) {
        $OverwriteDatasets = [Convert]::ToBoolean($Config.Options.OverwriteDatasets)
    }
    

    return New-Object -TypeName PSObject -Property @{
        ServerUrl = $Config.Options.TargetServerUrl
        Folder = Normalize-SSRSFolder -Folder $Config.Options.TargetFolder
        DataSourceFolder = Normalize-SSRSFolder -Folder $Config.Options.TargetDataSourceFolder
        DataSetFolder = Normalize-SSRSFolder -Folder $Config.Options.TargetDataSetFolder
        OutputPath = $Config.Options.OutputPath
        OverwriteDataSources = $OverwriteDataSources
        OverwriteDatasets = $OverwriteDatasets
    }

}