我正确编码了这个powershell吗?因为它不符合我的意图

时间:2011-08-26 17:23:39

标签: powershell sharepoint-2010

需要从名为“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();
            }
}

2 个答案:

答案 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--
}