使用PowerShell将许多文件从sharepoint复制到其他文件

时间:2016-07-05 17:10:47

标签: powershell sharepoint

我试图将文档从一个共享点中的列表复制到另一个共享点:

这是我的代码:

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

foreach ($result in $result )

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

-$result是我使用网络服务获得的所有文件的列表,它的类型是system.array

-$source$destination是UNC,指的是两个共享点的网址

错误是

  

“找不到路径\ ... \ 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 } 

}

1 个答案:

答案 0 :(得分:1)

您遇到的问题可能是转换问题造成的。您正在尝试将内容从一个SP写入另一个SP作为文档,但是,您不能使用XmlElement这样做。

建议查看此帖子: Converting system.xml.xmlelement to system.xml.xmldocument with PowerShell

看到&#34; - $ result的内容是我使用网络服务获得的所有文件的列表会很有帮助,它的类型是system.array&#34;。

另外,为了便于阅读,我建议区分$result$result,如下所示:

foreach($document in $documentList){}

- 或 - (至少)

foreach($result in $results){}