Как использовать объектную модель клиента SharePoint и PowerShell для загрузки документов в библиотеки?
Я пытался преобразовать эти фрагменты кода в PowerShell:
ClientContext context = new ClientContext("http://spdevinwin");
2:
3: Web web = context.Web;
4:
5: FileCreationInformation newFile = new FileCreationInformation();
6: newFile.Content = System.IO.File.ReadAllBytes(@"C:\Work\Files\17580_FAST2010_S05_Administration.pptx");
7: newFile.Url = "17580_FAST2010_S05_Administration 4MB file uploaded via client OM.pptx";
8:
9: List docs = web.Lists.GetByTitle("Documents");
10: Microsoft.SharePoint.Client.File uploadFile = docs.RootFolder.Files.Add(newFile);
11: context.Load(uploadFile);
12: context.ExecuteQuery();
13: Console.WriteLine("done");
а также:
// FileInfo in System.IO namespace
var fileCreationInformation = new FileCreationInformation();
byte[] bytefile = System.IO.File.ReadAllBytes(“c:\\test\Test2.txt”);
fileCreationInformation.Content = bytefile;
fileCreationInformation.Overwrite = true;
fileCreationInformation.Url = “http://astro/MyLibrary/MyFolder/Test2.txt”;
// CurrentList is a client OM List object
CurrentList.RootFolder.Files.Add(fileCreationInformation);
Context.ExecuteQuery();
Но я получаю ошибки в методах Update() и Add($file)
2 ответа
Вы сможете использовать командлеты SharePoint PowerShell только в том случае, если вы работаете на сервере. Они не работают удаленно, особенно для SharePoint Online.
Вы не включили весь свой код PowerShell, но я предполагаю, что вы не вызывали ClientContext.Load и ClientContext.ExecuteQuery после каждого шага получения списка и загрузки файла на сервер.
Справочник по использованию многих сценариев PowerShell CSOM
Вместо использования клиентской объектной модели принятым способом загрузки файлов в SharePoint с помощью PowerShell является использование команд SharePoint PowerShell. Вы можете использовать что-то похожее на следующий код:
Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue
$Library = "My Library"
$siteurl = "http://MyWebApp/sites/SiteName"
$FilePath = "C:\Test\test2.txt"
# Get Web site
$Web = Get-SPWeb $SiteUrl
# Get Library
$docLibrary = $web.Lists[$Library]
$folder = $docLibrary.RootFolder
# Get the file
$File = Get-ChildItem $FilePath
# Build the destination SharePoint path
$SPFilePath = ($folder.URL + "/" + $File.Name)
$spFile = $folder.Files.Add($SPFilePath, $File.OpenRead(), $true) #Upload with overwrite = $true (SP file path, File stream, Overwrite?)
Для функции многократного использования, которую вы можете использовать для загрузки файлов, перезаписи, утверждения и регистрации, используйте командлет, который я создал здесь: http://pastebin.com/Tvb4LfZV