PowerShell更改网络共享中的下载文件夹路径



我有这个脚本,它从报表服务器下载文件,并将这些文件放入本地网络共享中。脚本做了它需要做的事情,但下载文件夹看起来像这样hitsqlp->提取物->输出->web16p。。。这是文件夹需要驻留的路径,但它正在将该路径复制到子文件夹中,所以现在我必须单击每个子文件夹才能访问文件。我希望文件夹"SSRSFolder"是\epicsqlt\Extracts\Output\HIT\web16p 的子文件夹

下面的代码,我不确定哪里出了问题:

set-location -path \epicsqltExtractsOutputHITweb16p
$downloadFolder = "\epicsqltExtractsOutputHITweb16p"
$ssrsServer = "blahblahblah"
$secpasswd = ConvertTo-SecureString "password" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("username", $secpasswd)
$ssrsProxy = New-WebServiceProxy -Uri "$($ssrsServer)" -Credential $mycreds

$ssrsProxy = New-WebServiceProxy -Uri "$($ssrsServer)" -UseDefaultCredential

$ssrsItems = $ssrsProxy.ListChildren("/", $true) | Where-Object {$_.TypeName -eq "DataSource" -or $_.TypeName -eq "Report"}

Foreach($ssrsItem in $ssrsItems)
{
# Determine extension for Reports and DataSources
if ($ssrsItem.TypeName -eq "Report")
{
$extension = ".rdl"
}
else
{
$extension = ".rds"
}

Write-Host "Downloading $($ssrsItem.Path)$($extension)";

$downloadFolderSub = $downloadFolder.Trim('') + $ssrsItem.Path.Replace($ssrsItem.Name,"").Replace("/","").Trim() 
New-Item -ItemType Directory -Path $downloadFolderSub -Force > $null

$ssrsFile = New-Object System.Xml.XmlDocument
[byte[]] $ssrsDefinition = $null
$ssrsDefinition = $ssrsProxy.GetItemDefinition($ssrsItem.Path)

[System.IO.MemoryStream] $memoryStream = New-Object System.IO.MemoryStream(@(,$ssrsDefinition))
$ssrsFile.Load($memoryStream)
$fullDataSourceFileName = $downloadFolderSub + "" + $ssrsItem.Name +  $extension;
$ssrsFile.Save($fullDataSourceFileName);
}

如果我没看错的话。

您正在使用启动脚本

设置位置-path\epicsqlt\Extracts\Output\HIT\web16p

然后将$downloadfolder变量设置为该路径,并将$downloadfolder包含在$downloadfoldersub创建中。

所以结果是

epicsqlt\Extracts\Output\HIT\web16p\somepath\somefolder\

然后,当您已经在\web16p\文件夹中工作时,您正在使用整个路径创建一个新项目。