Ответ 1
PowerShell почти то же самое.
$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($username, $password, $domain)
$webpage = $webclient.DownloadString($url)
В С# я могу сделать что-то вроде этого:
System.Net.WebClient w = new System.Net.WebClient();
w.Credentials = new System.Net.NetworkCredential(username, auth, domain);
string webpage = w.DownloadString(url);
Есть ли версия Powershell, или я просто позвоню в CLR?
PowerShell почти то же самое.
$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($username, $password, $domain)
$webpage = $webclient.DownloadString($url)
Для тех, кому нужна 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"
В некоторых случаях аутентификация NTLM по-прежнему не будет работать, если заданы правильные учетные данные.
Существует механизм, который лишает NTLM-аутентификацию в WebClient, см. здесь для получения дополнительной информации: System.Net.WebClient не работает с Windows Authentication
Если вы пытаетесь ответить выше и все еще не работаете, следуйте приведенной выше ссылке, чтобы добавить реестр, чтобы сделать домен включенным.
Отправить это здесь, чтобы сохранить другое время;)