ReportService2010:创建父目录

时间:2018-03-29 23:21:16

标签: reporting-services ssrs-2014

我编写了一个PowerShell脚本,将RDL文件批量上传到SSRS 2014.我使用ReportService2010.aspx公开的SOAP API:

$ssrsProxy = New-WebServiceProxy -Uri $uri -Credential $cred
$itemType = $ssrsProxy.GetItemType("/$reportFolder")
if($itemType -like "unknown")
{
    $ssrsProxy.CreateFolder($reportFolder, "/", $null)
}

如果$reportFolder"foo",则有效,但如果"foo/bar"则无效。错误是:

  

异常调用" CreateFolder"用" 3"参数:"项目的名称' foo / bar'无效。名称长度必须少于260个字符。名称不能以斜杠字符开头或包含保留字符。其他限制适用。有关有效项目名称的详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=301650

邮件中的网址无效,并重定向到"future resource"页面。 CreateFolder的实际文档说:

  

您可以使用正斜杠字符(/)分隔文件夹完整路径名中的项目,但不能在文件夹名称的末尾使用它。

我是否错误地解释了这一点,或者它是否实际上没有记录?

1 个答案:

答案 0 :(得分:0)

我的快速而肮脏的解决方案,没有错误处理。使用风险自负。

$elements = $path.Split("/")
$parent = "/"
foreach($element in $elements)
{
    $name = ""
    if($parent.EndsWith("/"))
    {
        $name = "$parent$element"
    }
    else
    {
        $name = "$parent/$element"
    }
    $type = $ssrsProxy.GetItemType($name);
    if($type -like "unknown")
    {
        $ssrsProxy.CreateFolder($element, $parent, $null)
    }
    $parent = $name
}