Загрузить 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")