ps/Modules/Alkami.DevOps.SqlReports/Public/New-ReportServerFolder.ps1
2023-05-30 22:51:22 -07:00

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)
}
}