55 lines
1.9 KiB
PowerShell
55 lines
1.9 KiB
PowerShell
|
function New-ReportServerFolder {
|
||
|
<#
|
||
|
.SYNOPSIS
|
||
|
Create a new report folder on the SSRS server
|
||
|
|
||
|
.PARAMETER Proxy
|
||
|
SSRS Proxy
|
||
|
|
||
|
.PARAMETER ReportFolder
|
||
|
Folder to create
|
||
|
|
||
|
.PARAMETER ReportPath
|
||
|
Path in which to create ReportFolder
|
||
|
#>
|
||
|
|
||
|
[CmdletBinding()]
|
||
|
Param(
|
||
|
[Parameter(Position = 0, Mandatory = $true)]
|
||
|
[System.Web.Services.Protocols.SoapHttpClientProtocol]$Proxy,
|
||
|
|
||
|
[Parameter(Position = 1, Mandatory = $true)]
|
||
|
[string]$ReportFolder,
|
||
|
|
||
|
[Parameter(Position = 2, Mandatory = $false)]
|
||
|
[string]$ReportPath = "/"
|
||
|
)
|
||
|
|
||
|
$logLead = Get-LogLeadName
|
||
|
Write-Verbose ("$logLead : Checking for existing folder {0}." -f $ReportFolder)
|
||
|
# Check if folder exists, create if not found
|
||
|
|
||
|
try {
|
||
|
$folderType = $Proxy.GetItemType("/" + $ReportFolder.TrimStart("/"))
|
||
|
} catch {
|
||
|
Write-Output ("$logLead : Folder {0} does not exist, it will be created" -f $ReportFolder)
|
||
|
}
|
||
|
|
||
|
if ($null -eq $folderType -or $folderType -eq "Unknown") {
|
||
|
try {
|
||
|
$Proxy.CreateFolder($ReportFolder, $ReportPath, $null) | Out-Null
|
||
|
Write-Output ("$logLead : Created new folder {0}/{1}" -f $ReportPath.TrimEnd("/"), $ReportFolder)
|
||
|
} catch [System.Web.Services.Protocols.SoapException] {
|
||
|
if ($_.Exception.Detail.InnerText -like "*rsItemAlreadyExists*") {
|
||
|
Write-Verbose ("$logLead : Folder {0}/{1} already exists." -f $ReportPath, $ReportFolder)
|
||
|
} else {
|
||
|
$msg = ("$logLead : Error creating folder: {0}/{1}. Msg: '{2}'" -f $ReportPath, $ReportFolder, $_.Exception.Detail.InnerText)
|
||
|
Write-Error $msg
|
||
|
}
|
||
|
} catch {
|
||
|
Write-Warning ("$logLead : An Unknown Error Occurred -- {0}" -f $_.Exception.Message)
|
||
|
}
|
||
|
} else {
|
||
|
Write-Output ("$logLead : Folder {0}/{1} already exists" -f $ReportPath.TrimEnd("/"), $ReportFolder)
|
||
|
}
|
||
|
}
|