3

我尝试将这些代码片段转换为 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) 方法上遇到错误

4

2 回答 2

0

使用 PowerShell 将文件上传到 SharePoint 的公认方法是使用 SharePoint PowerShell Cmdlts,而不是使用客户端对象模型。您可以使用类似于以下代码的内容:

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?)

对于可用于上传文件、覆盖、批准和签入的可重用功能,请使用我在此处创建的 cmdlet:http: //pastebin.com/Tvb4LfZV

于 2013-06-10T20:19:16.230 回答
0

如果您在服务器上运行,您将只能使用 SharePoint PowerShell cmdlet。他们不远程工作,尤其是对于 SharePoint Online。

您没有包含所有 PowerShell 代码,但我猜您在获取列表并将文件加载到服务器的每个步骤之后都没有调用 ClientContext.Load 和 ClientContext.ExecuteQuery。

使用许多 PowerShell CSOM 方案的参考

于 2013-09-22T04:59:30.683 回答