Я правильно пишу этот PowerShell? Потому что это не делает то, что я хотел - PullRequest
1 голос
/ 26 августа 2011

Необходимо узнать имя набора документов по имени поля с названием «Регион». Мне нужно установить имя набора документов равным значению Region (NW, SW, NE, SE и т. Д.) И переместить файлы из корня библиотеки документов в соответствующий набор документов. Я не возражаю против жесткого кодирования сайта или веб-ссылки и документации по URL-адресу. Я получаю эту ошибку:

Отсутствует выражение после ','. В C: \ PS \ MoveFiles.ps1: 13 char: 59 + $ list.Items.MoveTo ($ destinationFolderUrl + $ file.Name, <<<< true); + CategoryInfo: ParserError: (,: String) [], ParseException + FullyQualifiedErrorId: MissingExpressionAfterToken </p>

#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 ]

5 голосов
/ 26 августа 2011

Второй параметр должен быть $true, а не просто true.

Я повторил ту же ошибку следующим образом:

function fun($m,[bool]$f) {
      write-host $m $f
}

fun ("blah", true)

Странно, что-то вроде:

function fun([bool]$f) {
      write-host $m $f
}
fun (true)

выдает ошибку типа:

fun: Невозможно обработать преобразование аргумента для параметра 'f'.Невозможно преобразовать значение «System.Management.Automation.PSCustomObject» в тип «System.Boolean», параметры этого типа принимают только логические значения или числа, вместо них используйте $ true, $ false, 1 или 0.

что более наглядно, а решение - в сообщении об ошибке!

0 голосов
/ 29 августа 2011

Это рабочий код

$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--
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...