在 Sharepoint 中使用 powershell 创建文件夹(网络服务)
Create folder with powershell in sharepoint (webservices)
我需要在 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)
这可能与网络客户端有关吗?如果没有,如何使用 Sharepoint Web 服务完成此操作?
由于您提到了 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)
}
用法
在 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 服务将抛出错误:
The operation failed because an unexpected error occurred. (Result
Code: 0x8107090d)
但由于 OnError
属性设置为 Continue
Batch Element,PowerShell 将继续执行。
我需要在 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)
这可能与网络客户端有关吗?如果没有,如何使用 Sharepoint Web 服务完成此操作?
由于您提到了 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)
}
用法
在 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 服务将抛出错误:
The operation failed because an unexpected error occurred. (Result Code: 0x8107090d)
但由于 OnError
属性设置为 Continue
Batch Element,PowerShell 将继续执行。