Загрузить URL-адрес

Я работаю в script, где я могу просматривать веб-контент или "url", но я не могу скопировать в него веб-контент и загрузить его как файл. Это то, что я сделал до сих пор:

$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 и сохранить его на локальном диске в виде файла?

Обновление:

Я получил следующие ошибки:

Вызывает вызов "DownloadFile" с аргументами "2": "Удаленный сервер ответил на ошибку: (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' < < <

Вызывает вызов "DownloadFile" с аргументами "2": "Удаленный сервер ответил на ошибку: (401)" Неавторизованный ". В строке: 6 char: 47 + (New-Object system.net.webclient).DownloadFile(< < < < < $url ", 'save.html')

Хорошо, позвольте мне объяснить больше, что я пытаюсь сделать: у меня есть файл excel на нашем сайте sharepoint, и это файл, который я пытаюсь загрузить локально (любой формат), который является частью script, так что для более поздней части script я могу сравнить этот файл с другими данными и получить вывод.

Теперь, если я смогу каким-то образом отобразить "мои документы" с сайта и смогу загрузить файл, это также сработает для меня.

Ответы

Ответ 1

Как я понимаю, вы пытаетесь использовать IE, потому что, если вы автоматически отправляете свои учетные данные (или, возможно, вы не знали ни о каком другом варианте).

Почему вышеупомянутые ответы не работают, потому что вы пытаетесь загрузить файл из SharePoint, и вы отправляете запрос неаутентифицированный. Ответ 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")

Ответ 2

Обновление Январь 2014: с Powershell v3, выпущенным в Windows 8, вы можете сделать это:

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

Оригинальная почта, действительная для версии Powershell версии 2

Это решение очень похоже на другие ответы от stej, Jay Bazusi и Marco Shaw. Это немного более общий, установив новый модуль в ваш каталог модулей, psurl. Модуль psurl добавляет новые команды, если вам нужно сделать много html-выборки (и POSTing) с помощью powershell.

(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex

См. домашнюю страницу веб-сайта для обмена кодами http://psget.net/.

Эта красивая строка PowerShell script будет загружать GetPsGet.ps1 и отправлять его вызывать-вызывать для установки модуля PsGet.

Затем установите PsUrl, модуль 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                                           ...

Вам нужно сделать это только один раз.

Обратите внимание, что эта ошибка может возникнуть:

Q: Ошибка "Файл xxx не может быть загружен, потому что выполнение скриптов отключено в этой системе. Подробнее см." get-help about_signing ".

A: По умолчанию PowerShell ограничивает выполнение всех скриптов. Это касается безопасности. Чтобы "исправить" этот запуск 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"

Ответ 3

Если вы просто хотите загрузить веб-контент, используйте

(New-Object System.Net.WebClient).DownloadFile('скачать URL-адрес,' save.html ')

Ответ 4

Я не знаю, как можно сохранить этот интерфейс.

Правильно ли это отображает страницу:

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

Ответ 5

Как уже было сказано в fooobar.com/questions/338443/..., но с обязательным прокси-сервером и учетными данными. Без прокси это будет:

$url="http://aaa.bbb.ccc.ddd/rss.xml"

$WebClient = New-Object net.webclient

$path="C:\Users\hugo\xml\test.xml"

$WebClient.DownloadFile($url, $path)

Ответ 6

$web = New-Object Net.WebClient

$web | Get-Member

$content=$web.DownloadString("http://www.bing.com")