2016-07-05 2 views
1

Я пытаюсь копировать документы из списка в одном SharePoint к другому:копирование многих файлов из SharePoint в другой с помощью PowerShell

это мой код:

************************************************* 
$source= "\\...\s1" 
$destination = "\\..\s2" 

foreach ($result in $result) 

{ copy-item -path $source -dest $destination} 
************************************************* 

-$result приведен список всех документов, Я получил с помощью веб-сервисов, он с типом является System.Array

-$source и $destination являются UNC, что относится к URL из двух

SharePoint

ошибка

"не может найти путь \ ... \ s1system.xml.Xml.XmlElement"

PS: Я не использую сервера машину, он с только клиент

Вот мой код

***************************************************** 




{ 

    param (

    [String]$Value, 
    [String]$Field, 
    [String]$RowLimit = "0", 
    [String]$Operator = "Contains", 
    [String]$WebURL = "https://.................../wer", 
    [String]$ListName = "Main documents", 
    [String]$ViewName, 
    [Switch]$Recurse 
) 
$ScriptDirectory = split-path $MyInvocation.MyCommand.Definition 
$dllPath = "P:\SamlCookieAuth.dll" -f $ScriptDirectory 
[void][System.Reflection.Assembly]::LoadFrom($dllPath) 

$queryOptionsValue = '' 
if ($Recurse) 
{ 
    $queryOptionsValue = '<ViewAttributes Scope="RecursiveAll"/>' 
} 

$WSUri = $WebURL + "/_vti_bin/Lists.asmx?wsdl" 
$listsWebServiceReference = New-WebServiceProxy -Uri $WSUri -UseDefaultCredential 
$listsWebServiceReference.Url = $webURL + "/_vti_bin/lists.asmx" 

[System.Uri]$CookieUri = $WebURL 
$listsWebServiceReference.CookieContainer = [ST.SamlCookieAuth.SamlCookieManager]::GetAuthenticatedCookiesContainer($CookieUri.AbsoluteUri, 0, 0) 

[System.Xml.XmlDocument]$xmlDoc = New-Object -TypeName System.Xml.XmlDocument 
[System.Xml.XmlElement]$queryOptions =$xmlDoc.CreateElement("QueryOptions") 
$queryOptions.InnerXml = $queryOptionsValue 

if ($PSBoundParameters.Keys.Contains("Value")) 
{ 
    [System.Xml.XmlElement]$query = $xmlDoc.CreateElement("Query") 
    $queryValue = "<Where><$Operator><FieldRef Name='$Field'/><Value Type='Text'>$Value</Value></$Operator></Where>" 
    $query.InnerXml = $queryValue 
    $result=$listsWebServiceReference.GetListItems($listName, $viewName, $query, $null, $rowLimit, $queryOptions, $null).data.row 
} 
else 
{ 
    $result=$listsWebServiceReference.GetListItems($listName, $viewName, $null, $null, $rowLimit, $queryOptions, $null).data.row 
} 




$destDirectory = "\\.............\TER\Main Documents" 

foreach ($resul in $result) 

{Copy-Item -path $resul -destination $destDirectory } 

} 
+0

'Еогеасп ($ результат в $ результат)' выглядит подозрительно для меня. Я бы попробовал 'foreach ($ doc в $ result)'. Также вы должны проверить, что находится в этом массиве - возможно, вам придется получить доступ к свойству, чтобы перейти к 'copy-item' вместо полного объекта. – Filburt

+0

это имя listeName, которое я получаю с помощью команды new-webserviceproxy.It содержит такие свойства, как: ows_linkFileName, ows_modified ..... – ajar

ответ

1

Возможно, проблема, которую вы испытываете, является результатом вопроса преобразования. Вы пытаетесь записать контент с одного SP на другой в качестве документа, однако вы не можете сделать это с помощью XmlElement.

Suggest проверить этот пост: Converting system.xml.xmlelement to system.xml.xmldocument with PowerShell

Было бы полезно, чтобы увидеть содержание «- $ результатом является список всех документов, которые я получил с помощью веб-сервисов, он с типом является System.Array ».

Кроме того, для удобства чтения, я хотел бы предложить различия между $result и $result следующим образом:

foreach($document in $documentList){} 

-или- (как минимум)

foreach($result in $results){} 
+0

Увидите, пожалуйста, код, пожалуйста? – ajar

Смежные вопросы