在sharepoint中创建包含powershell的文件夹(Web服务)

时间:2015-02-02 11:09:21

标签: powershell sharepoint sharepoint-2010

我需要在sharepoint中创建一个文件夹(如果它尚不存在)。我的powershell脚本没有在sharepoint服务器上运行,所以我认为我必须使用sharepoint Web服务?我目前正在使用webclient将文件上传到sharepoint,如下所示 - 但我需要先为文件创建文件夹...如果它还不存在;

# Upload the file
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = $credentials
$webclient.UploadFile($destination + "/" + $File.Name, "PUT", $File.FullName)

这可能与webclient有关吗?如果没有,如何使用sharepoint Web服务完成这项工作?

1 个答案:

答案 0 :(得分:1)

由于您提到了SharePoint Web服务,因此Lists.UpdateListItems Method可用于此目的,例如:

Function Create-Folder([string]$WebUrl,[string]$ListUrl,[string]$ListName,[string]$FolderName)
{
     $url = $WebUrl +  "/_vti_bin/lists.asmx?WSDL" 
     $listsProxy = New-WebServiceProxy -Uri $url  -UseDefaultCredential

     $batch = [xml]"<Batch OnError='Continue' RootFolder='$WebUrl/$ListUrl'><Method ID='1' Cmd='New'><Field Name='ID'>New</Field><Field Name='FSObjType'>1</Field><Field Name='BaseName'>$FolderName</Field></Method></Batch>"
     $result = $listsProxy.UpdateListItems($ListName, $batch) 
}

<强>用法

Orders库下创建Documents文件夹:

Create-Folder -WebUrl "http://contoso.intranet.com" -ListUrl "Documents" -ListName "Documents" -FolderName "Orders"

2014列表中创建Requests文件夹:

Create-Folder -WebUrl "http://contoso.intranet.com" -ListUrl "Lists/Requests" -ListName "Requests" -FolderName "2014" 

<强>更新

如果文件夹已存在,那么SOAP服务将抛出错误:

  

操作失败,因为发生了意外错误。 (结果   代码:0x8107090d)

但由于Batch ElementOnError属性设置为Continue,因此PowerShell将继续执行。