【问题标题】:Create folder with powershell in sharepoint (webservices)在sharepoint(webservices)中使用powershell创建文件夹
【发布时间】:2015-02-04 00:19:52
【问题描述】:

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

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

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

【问题讨论】:

    标签: powershell sharepoint sharepoint-2010


    【解决方案1】:

    由于您提到了 SharePoint Web Services,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) 
    }
    

    用法

    Documents库下创建Orders文件夹:

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

    Requests列表中创建2014文件夹:

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

    更新

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

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

    但由于OnError 属性设置为ContinueBatch Element,PowerShell 将继续执行。

    【讨论】:

    • 谢谢 - 真的很有帮助!如果文件夹已经存在,这个错误会继续吗?
    猜你喜欢
    • 2017-11-04
    • 2014-06-17
    • 2018-10-04
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    相关资源
    最近更新 更多