Search code examples
powershellreporting-servicesssrs-2014

How do I set a SSRS report's Hidden property to "True" in PowerShell using ReportService2010?


I am setting the Hidden property to "True" at the end of this code, however, it continues to be displayed in the Report Manager interface. Does anyone know how to set this property using PowerShell with ReportService2010?

     $reportServerUri = "http://local/ReportServer_SQL2014/ReportService2010.asmx?wsdl"
     $rs = New-WebServiceProxy -Uri $reportServerUri -UseDefaultCredential 

     $proxyNamespace = $rs.GetType().Namespace

     $targetFolderPath = "/My Reports"
     $targetDatasourceRef = "/SharedDataSources/sdsHP"
     $warnings = $null
     $sourceFolderPath = "C:\Reports"

     Get-ChildItem $sourceFolderPath -Recurse -Filter "*.rdl" | Foreach-Object {
$reportName = [System.IO.Path]::GetFileNameWithoutExtension($_.Name)
$bytes = [System.IO.File]::ReadAllBytes($_.FullName)

Write-Output "Uploading report ""$reportName"" to ""$targetFolderPath""..."
$report = $rs.CreateCatalogItem(
    "Report",         # Catalog item type
    $reportName,      # Report name
    $targetFolderPath,# Destination folder
    $true,            # Overwrite report if it exists?
    $bytes,           # .rdl file contents
    $null,            # Properties to set.
    [ref]$warnings)   # Warnings that occured while uploading.

$warnings | ForEach-Object {
    Write-Output ("Warning: {0}" -f $_.Message)
}

# Set the Hidden property of the reports.
     $report.Hidden = "True" 
     $report.HiddenSpecified = "True"

}         

Solution

  • It is more involved but works for me, using SMO:

       # Set the Hidden property of subreports using SMO.
        $smodb = New-Object Microsoft.SqlServer.Management.Smo.Database
        $smodb = $smoServer.Databases.Item("ReportServer")
        $smodb.ExecuteNonQuery("UPDATE ReportServer.dbo.Catalog SET Hidden =1 WHERE [Name] = '$ReportName' AND [Type] =2;")