我编写了一个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
的实际文档说:
您可以使用正斜杠字符(/)分隔文件夹完整路径名中的项目,但不能在文件夹名称的末尾使用它。
我是否错误地解释了这一点,或者它是否实际上没有记录?
答案 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
}