我正在使用脚本,在那里我可以浏览网页内容或"网址",但我无法将网页内容复制到其中并作为文件下载.这是我到目前为止所做的:
$url = "http://sp-fin/sites/arindam-sites/_layouts/xlviewer.aspx?listguid={05DA1D91-F934-4419-8AEF-B297DB81A31D}&itemid=4&DefaultItemOpen=1"
$ie=new-object -com internetexplorer.application
$ie.visible=$true
$ie.navigate($url)
while($ie.busy) {start-sleep 1}
Run Code Online (Sandbox Code Playgroud)
如何复制内容$url
并将其作为文件保存到本地驱动器?
我收到了这些错误:
使用"2"参数调用"DownloadFile"的异常:"远程服务器返回错误:(401)未经授权." 在:行:6 char:47 +(New-Object system.net.webclient).DownloadFile(<<<<"$ url/download-url-content",'save.html')
方法调用中缺少')'.在:行:6 char:68 +(New-Object system.net.webclient).DownloadFile("$ url",'save.html'<<<<
使用"2"参数调用"DownloadFile"的异常:"远程服务器返回错误:(401)未经授权." 在:行:6 char:47 +(New-Object system.net.webclient).DownloadFile(<<<<"$ url",'save.html')
好吧,让我解释一下,关于我想要做的事情:我在我们的共享点网站上有一个excel文件,这是我试图在本地下载的文件(任何格式),这是脚本的一部分,所以对于脚本的后半部分,我可以将此文件与其他数据进行比较并获得输出.
现在,如果我能以某种方式从网站上映射"我的文档"并能够下载文件,那对我也有用.
ste*_*tej 27
据我了解,您尝试使用IE,因为如果自动发送您的凭据(或者您可能不知道任何其他选项).
为什么上述答案不起作用是因为您尝试从SharePoint下载文件并发送未经身份验证的请求.回复是401.
这有效:
PS>$wc=new-object system.net.webclient
PS>$wc.UseDefaultCredentials = $true
PS>$wc.downloadfile("your_url","your_file")
Run Code Online (Sandbox Code Playgroud)
如果Posh的当前用户有权下载文件(与IE中记录的文件相同).
如果没有,试试这个:
PS>$wc=new-object system.net.webclient
PS>$wc.Credentials = Get-Credential
PS>$wc.downloadfile("your_url","your_file")
Run Code Online (Sandbox Code Playgroud)
knb*_*knb 22
2014年1月更新:使用Windows 8发布的Powershell v3,您可以执行以下操作:
(Invoke-webrequest -URI "http://www.kernel.org").Content
Run Code Online (Sandbox Code Playgroud)
原帖,对Powershell Version 2有效
这个解决方案与stej,Jay Bazusi和Marco Shaw的其他答案非常相似.通过在模块目录psurl中安装新模块,可以更加通用.模块psurl添加了新的命令,以防你需要使用powershell进行大量的html-fetching(和POSTing).
(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex
Run Code Online (Sandbox Code Playgroud)
请参阅代码共享网站http://psget.net/的主页.
这个很好的PowerShell脚本行将下载GetPsGet.ps1并将其发送到Invoke-Expression以安装PsGet模块.
然后安装PsUrl,一个受curl启发的Powershell模块:
要从中央目录安装某些东西(在我们的例子中是PsUrl),只需输入:
install-module PsUrl
get-module -name psurl
Run Code Online (Sandbox Code Playgroud)
输出:
ModuleType Name ExportedCommands
---------- ---- ----------------
Script psurl {Get-Url, Send-WebContent, Write-Url, Get-WebContent}
Run Code Online (Sandbox Code Playgroud)
命令:
get-command -module psurl
Run Code Online (Sandbox Code Playgroud)
输出:
CommandType Name Definition
----------- ---- ----------
Function Get-Url ...
Function Get-WebContent ...
Alias gwc Get-WebContent
Function Send-WebContent ...
Alias swc Send-WebContent
Function Write-Url ...
Run Code Online (Sandbox Code Playgroud)
你只需要这样做一次.
请注意,可能会发生此错误:
问:错误"无法加载文件xxx,因为在此系统上禁用了脚本的执行.有关详细信息,请参阅"get-help about_signing".
答:默认情况下,PowerShell会限制所有脚本的执行.这完全是关于安全性的.要"修复" ,请以管理员身份运行PowerShell 并调用
Set-ExecutionPolicy RemoteSigned
Run Code Online (Sandbox Code Playgroud)
从现在开始,在您的新PowerShell会话/脚本中,执行以下操作:
import-module psurl
get-url "http://www.google.com"
Run Code Online (Sandbox Code Playgroud)
要下载并保存到文件,请执行以下操作:
get-url "http://www.google.com" | out-file -filepath "myfile.html"
Run Code Online (Sandbox Code Playgroud)
小智 11
我不知道使用该界面保存的任何方法.
这是否正确呈现页面:
PS>$wc=new-object system.net.webclient
PS>$wc.downloadfile("your_url","your_file")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
61076 次 |
最近记录: |