Как сделать аутентифицированный веб-запрос в Powershell? - PullRequest
43 голосов
/ 03 февраля 2009

В C # я мог бы сделать что-то вроде этого:

System.Net.WebClient w = new System.Net.WebClient();
w.Credentials = new System.Net.NetworkCredential(username, auth, domain);
string webpage = w.DownloadString(url);

Существует ли версия Powershell, или я должен просто позвонить на CLR ?

Ответы [ 3 ]

66 голосов
/ 04 февраля 2009

PowerShell практически такой же.

$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($username, $password, $domain)
$webpage = $webclient.DownloadString($url)
26 голосов
/ 14 сентября 2012

Для тех, кому нужен Powershell для возврата дополнительной информации, такой как Http StatusCode, вот пример. Включены два наиболее вероятных способа передачи учетных данных.

Это слегка измененная версия этого SO ответа:
Как получить числовые коды состояния HTTP в PowerShell

$req = [system.Net.WebRequest]::Create($url)
# method 1 $req.UseDefaultCredentials = $true
# method 2 $req.Credentials = new NetworkCredential($username, $pwd, $domain); 
try
{
    $res = $req.GetResponse()
}
catch [System.Net.WebException]
{
    $res = $_.Exception.Response
}

$int = [int]$res.StatusCode
$status = $res.StatusCode
return "$int $status"
2 голосов
/ 14 сентября 2017

В некоторых случаях аутентификация NTLM по-прежнему не будет работать, если указаны правильные учетные данные.

Существует механизм, который аннулирует аутентификацию NTLM в WebClient, дополнительную информацию см. Здесь: System.Net.WebClient не работает с аутентификацией Windows

Если вы пытаетесь ответить выше, но он все еще не работает, перейдите по указанной выше ссылке, чтобы добавить реестр, чтобы домен вошел в белый список.

Разместите это здесь, чтобы сэкономить чужое время;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...