为大家加油,
我遇到了最奇怪的问题,我需要您的帮助想法来解决该问题。
因此,我有一个下载脚本,该脚本使用Webclient对象从公司内部网提取内容。它需要凭据,并且可以在大约80%的计算机上运行。该脚本使用.DownloadString
提取列表,然后使用.DownloadFile
解析并获取一些文件。
在无法运行的计算机上,初始.DownloadString
会挂起,直到出现超时并返回$null
为止。
用户凭据与这些类型的计算机无关,这意味着在另一台计算机上工作的用户在此计算机上失败。
地址(如果输入浏览器)将返回内容。
我以这种方式讲过代码:
$wc = new-object System.Net.WebClient
$wc.Credentials = new-object System.Net.NetworkCredential($user, $pass, $domain)
$old_eap = $ErrorActionPreference
$ErrorActionPreference = "Stop"
try
{
$tmp = $wc.DownloadString($url)
if ([String]::IsNullOrEmpty($tmp))
{
throw "Intranet server did not return directory listing"
}
Return $tmp #the code is actually part of a function...
}
catch
{
write-error $_.Exception.Message
Return $null
}
finally
{
$ErrorActionPreference = $old_eap
}
除了在不同机器之间寻找更改的设置外,我什么都不知道。但是,哪些设置与这样的Webclient可能相关?有任何想法吗?我严重卡住了...
我忘记了……为了使事情变得容易一些,我坚持使用2.0版,但我们还无法更新。 mm ...
预先感谢 亚历克斯
答案 0 :(得分:0)
也许尝试使用xmlhttp作为客户端。下面是用法示例。
$url = "https://example.com/"
$http = New-Object -ComObject Msxml2.XMLHTTP
$user = "Domain\username"
$pwd = "password"
$utf = [System.Text.Encoding]::UTF8
$http.open("GET", $url, $false, $user, $pwd)
$http.send()
$result = $utf.GetString($http.responseBody)