New-SSRSDataSet.ps1
function New-SSRSDataSet ( $Proxy, [string]$RsdPath, [string]$Folder, [bool]$Overwrite=$false, $DataSourcePaths ) { $script:ErrorActionPreference = 'Stop' Write-Verbose "Processing DataSet '$RsdPath'..." $Folder = Normalize-SSRSFolder -Folder $Folder $Name = [System.IO.Path]::GetFileNameWithoutExtension($RsdPath) $RawDefinition = Get-Content -Encoding Byte -Path $RsdPath [xml]$Rsd = Get-Content -Path $RsdPath $properties = $null $warnings = $null #Nevermind it always uses filename # if([string]::IsNullOrEmpty($Rsd.SharedDataSet.DataSet.Name )) # { # $Rsd.SharedDataSet.DataSet.Name=$Name # } $FakeResult = New-Object -TypeName PSObject -Property @{ Name = $Rsd.SharedDataSet.DataSet.Name Path = $Folder + '/' + $Name } $exists = $Proxy.GetItemType($FakeResult.Path) -ne 'Unknown' $write = $false if ($exists) { if ($Overwrite) { Write-Verbose " - overwriting" $write = $true } else { Write-Verbose " - skipped, already exists" } } else { Write-Verbose " - creating new" $write = $true } if ($write) { # https://msdn.microsoft.com/en-us/library/reportservice2010.reportingservice2010.createcatalogitem.aspx $Results = $Proxy.CreateCatalogItem("DataSet", $Name, $Folder, $Overwrite, $RawDefinition, $properties, [ref]$warnings) $DataSourcePath = $DataSourcePaths[$Rsd.SharedDataSet.DataSet.Query.DataSourceReference] if ($DataSourcePath) { $Reference = New-Object -TypeName SSRS.ReportingService2010.ItemReference $Reference.Reference = $DataSourcePath $Reference.Name = 'DataSetDataSource' #$Rsd.SharedDataSet.DataSet.Name $Proxy.SetItemReferences($Folder + '/' + $Name, @($Reference)) } } else{ $Results=$FakeResult; } return $Results } |