需要从名为“Region”的字段名称中找出文档集名称。我需要将文档集名称设置为Region(NW,SW,NE,SE等),并将文件从文档库的根目录移动到其受尊重的文档集。我不介意对网站或网址和doc lib网址进行硬编码。我正在发现这个错误:
','之后缺少表达式。在C:\ PS \ MoveFiles.ps1:13 char:59 + $ list.Items.MoveTo($ destinationFolderUrl + $ file.Name,<<<< true); + CategoryInfo:ParserError :(,:String)[],ParseException + FullyQualifiedErrorId:MissingExpressionAfterToken
#Setup default variables
$webUrl = Get-SPWeb -Identity "http://CiscoIntranet/sites/VOIP"
$list = $webUrl.GetList("http://CiscoIntranet/sites/VOIP/ForwardTech")
[System.Reflection.Assembly]::LoadWithPartialName(”Microsoft.SharePoint”)
function ProcessMove {
param($folderUrl)
$folder = $web.GetFolder($folderUrl)
foreach ($file in $folder.Files)
{
$docset=$($file.Region);
$destinationFolderUrl = "http://CiscoIntranet/sites/VOIP/ForwardTech/" + $docset;
$list.Items.MoveTo($destinationFolderUrl + $file.Name, true);
$webUrl.Update();
}
}
答案 0 :(得分:5)
第二个参数应为$true
,而不仅仅是真。
我复制了同样的错误如下:
function fun($m,[bool]$f) {
write-host $m $f
}
fun ("blah", true)
奇怪的是,像:
function fun([bool]$f) {
write-host $m $f
}
fun (true)
给出如下错误:
有趣:无法在参数'f'上处理参数转换。不能 将值“System.Management.Automation.PSCustomObject”转换为键入 “System.Boolean”,此类型的参数仅接受布尔值或 数字,使用$ true,$ false,1或0代替。
更具描述性,解决方案在错误消息中!
答案 1 :(得分:0)
这是工作代码
$siteURL="http://Server"
$docLib = "My Doc Lib"
$site=Get-SPSite $siteURL
$web=$site.RootWeb
$collFiles=$web.GetFolder($docLib).Files
$count=$collFiles.Count
while($count -ne 0)
{
$item = $collFiles[$count-1].Item
$DocSet = $item["Region"]
Write-Host "$DocSet is the doc set. $collFiles[$count-1].Name is name"
$collFiles[$count-1].MoveTo($siteURL + "/" + $docLib + "/" + $DocSet + "/" + $collFiles[$count-1].Name, $true)
$count--
}