首页 文章

下载网址内容

提问于
浏览
16

我正在使用脚本,我可以浏览网页内容或“网址”,但我无法将网页内容复制到其中并作为文件下载 . 这是我到目前为止所做的:

$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}

如何复制 $url 的内容并将其作为文件保存到本地驱动器?

更新:

我收到了这些错误:

使用“2”参数调用“DownloadFile”的异常:“远程服务器返回错误:(401)未经授权 . ”在:line: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'<<<< Exception calling“DownloadFile”with“2”argument(s):“远程服务器返回错误:(401)Unauthorized . “在:line:6 char:47(New-Object system.net.webclient).DownloadFile(<<<<”$ url“,'save.html')

好吧,让我解释一下,关于我想要做的事情:我在我们的共享点网站上有一个excel文件,这是我试图在本地下载的文件(任何格式),这是脚本的一部分,所以对于脚本的后半部分,我可以将此文件与其他数据进行比较并获得输出 .

现在,如果我能以某种方式从网站上映射“我的文档”并能够下载文件,那对我也有用 .

6 回答

  • 12

    我不知道使用该界面保存的任何方法 .

    这是否正确呈现页面:

    PS>$wc=new-object system.net.webclient
    PS>$wc.downloadfile("your_url","your_file")
    
  • 3

    如果您只想下载网页内容,请使用

    (New-Object System.Net.WebClient).DownloadFile( 'download url content', 'save.html' )
    
  • 18

    正如https://stackoverflow.com/a/35202299/4636579已经回答,但有强制代理和凭据 . 没有代理,它将是:

    $url="http://aaa.bbb.ccc.ddd/rss.xml"
    
    $WebClient = New-Object net.webclient
    
    $path="C:\Users\hugo\xml\test.xml"
    
    $WebClient.DownloadFile($url, $path)
    
  • 11
    $web = New-Object Net.WebClient
    
    $web | Get-Member
    
    $content=$web.DownloadString("http://www.bing.com")
    
  • 1

    据我了解,您尝试使用IE,因为如果自动发送您的凭据(或者您可能不知道任何其他选项) .

    为什么上述答案不起作用是因为您尝试从SharePoint下载文件并发送 unauthenticated 请求 . 回复是401 .

    这有效:

    PS>$wc=new-object system.net.webclient
    PS>$wc.UseDefaultCredentials = $true
    PS>$wc.downloadfile("your_url","your_file")
    

    如果Posh的当前用户有权下载文件(与IE中记录的文件相同) .

    如果没有,试试这个:

    PS>$wc=new-object system.net.webclient
    PS>$wc.Credentials = Get-Credential
    PS>$wc.downloadfile("your_url","your_file")
    
  • 26

    Update Jan 2014: With Powershell v3, released with Windows 8, you can do this:

    (Invoke-webrequest -URI "http://www.kernel.org").Content
    

    Original Post, valid for 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
    

    请参阅代码共享网站http://psget.net/的主页 .

    这个不错的PowerShell脚本行将下载GetPsGet.ps1并将其发送到Invoke-Expression以安装PsGet模块 .

    然后安装PsUrl,一个受curl启发的Powershell模块:

    要从中央目录安装某些东西(在我们的例子中是PsUrl),只需输入:

    install-module PsUrl
    
    get-module -name psurl
    

    输出:

    ModuleType Name                      ExportedCommands
    ---------- ----                      ----------------
    Script     psurl                     {Get-Url, Send-WebContent, Write-Url, Get-WebContent}
    

    命令:

    get-command -module psurl
    

    输出:

    CommandType     Name                                                Definition
    -----------     ----                                                ----------
    Function        Get-Url                                             ...
    Function        Get-WebContent                                      ...
    Alias           gwc                                                 Get-WebContent
    Function        Send-WebContent                                     ...
    Alias           swc                                                 Send-WebContent
    Function        Write-Url                                           ...
    

    你只需要这样做一次 .

    请注意,可能会发生此错误:

    问:错误“无法加载文件xxx,因为在此系统上禁用了脚本的执行 . 有关详细信息,请参阅”get-help about_signing“ .

    答:默认情况下,PowerShell会限制所有脚本的执行 . 这完全是关于安全性的 . 要"fix",这将以管理员身份运行PowerShell并调用

    Set-ExecutionPolicy RemoteSigned
    

    从现在开始,在您的新PowerShell会话/脚本中,执行以下操作:

    import-module psurl
    get-url "http://www.google.com"
    

    要下载并保存到文件,请执行以下操作:

    get-url "http://www.google.com" | out-file -filepath "myfile.html"
    

相关问题