0

目的:编程方式上传文件到SharePoint上传文件使用PowerShell到SharePoint 2007年,即对象

问题:

  1. 当尝试使用方法:[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")它并不错误,但它确实当我尝试使用它包含的对象时出错。如New-Object Microsoft.SharePoint.SPSite($url)。修复此问题的方法是下载安装MOSS的实际服务器上的Web extensions文件夹中包含的“Microsoft.Sharepoint.dll”。与此相关的问题是在2008年服务器上运行这些脚本,该服务器在一家大公司中承载我们的Sharepoint网站并不“实际”。

  2. 我的第二种方法是使用Internet Explorer com对象物理导航到页面并从那里上传文件。由于我的研究显示Microsoft为“安全措施”,因此得到文本框的ID后,我无法设置该值。当使用get-member cmdlet时,我能够看到这个html元素的字段值被假定为'System.String value {get; set;}'。当我尝试设置这个值时什么都没有发生。网站上的文本框本身不允许输入任何内容,而是可点击文本框并显示“选择要上传的文件”窗口。如果我手动选择要上传但未提交的文件,请返回ISE,并执行$uploadText.Value它将我刚选择的文件分发给控制台。

  3. 我的第三个努力是使用VB中的sendkeys对象将路径发送到Web浏览器并以此方式上传文件。但是在运行它时,程序会挂起而不会发送它。我发现这个策略:http://technet.microsoft.com/en-us/library/ff731008被描述为“有点......脾气......”。我首先让$ ie对象打开Microsoft文件浏览器,然后尝试将密钥发送给它。

未遂代码:(使用IE的COM对象,则AppActivate和的SendKeys):

$spURL = "https://SharepointSite" 
[void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic") 
$ie = new-object -com "InternetExplorer.Application" 
$ie.visible = $true 
$ie.navigate2($spURL) 
while($ie.Busy -eq $true) {Start-Sleep 1} 
($ie.Document.GetElementByID("zz16_UploadMenu")).click() 
while($ie.Busy -eq $true) {Start-Sleep 1} 
$uploadText = $ie.Document.GetElementByID("ctl00_PlaceHolderMain_ctl01_ctl02_InputFile") 
[Microsoft.VisualBasic.Interaction]::AppActivate("Upload Document") 
$uploadText.value = "C:\uploadFile.xlsx" #this line does nothing 
$uploadText.click() ## opens up "choose file to upload" 
[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms") 
[System.Windows.Forms.SendKeys]::SendWait("C:\uploadFile.xlsx") 

,就是这样,浏览器框弹出,和脚本永远不会结束。我发现其他一些人在将AppActivate设置为“选择要上传的文件”时遇到了问题(在将它更改为IE标题“Upload Document”之前,我已将其设置为)。这些问题都在VB中,但我确实发现有人声称是“引用Microsoft HTML库”的修复程序,但它只适用于VB,并且我需要在PowerShell中使用它。该修复可以找到here,但它不适合我。

看来微软只是不希望我以编程方式上传文件。但在我认为这个“不可能”之前,我只是想先把它发布在这里。任何帮助将不胜感激,我认为一切都可能与PowerShell! :d

回答

0

由于你不能做一个FileUpload与Comobject IE

安全原因,我用PS内的华廷DLL解决了这个问题。

我不能从这里访问我的样本,但你会发现你在www.watin.org极品工作都是围绕

+0

感谢。老实说,没有尝试,因为升级到2010年没有必要。有道理,虽然这将是一个安全威胁。 – Cole9350 2013-07-02 17:18:37