【发布时间】:2015-02-12 17:49:46
【问题描述】:
以下代码是一个 powerShell 脚本,它发送 POST 请求并获取响应并将其存储到 $response。当我尝试获取表单值并尝试将其存储到 $wa 时,它会自动打开浏览器。
$destination="https://adfs.somedomain.com/adfs/ls/";
$response = '';
$username = 'some username';
$password = 'some password';
$AuthMethod = 'FormsAuthentication';
$postParams = @{
destination="$destination";
flags='0';
forcedownlevel='0';
trusted='0'
UserName="$($username)";
Password="$($password)";
AuthMethod = "$($AuthMethod)";
isUtf8='1'
}
$url = "$($destination)?wa=wsignin1.0&wtrealm=urn:federation:cas"
$response = Invoke-WebRequest -uri $url -Method POST -body $postParams;
$wa = $response.InputFields.value[0];
如何让脚本不打开浏览器?
注意:它发送 post 请求,该请求返回重定向到与 get 请求相同的 uri,并以我试图存储在变量中的一些表单值进行响应。
【问题讨论】:
-
只执行这两行就打开浏览器?我尝试非常快速地复制以下内容,并且所有内容都包含在我的 Shell 中,无需打开浏览器。
$response = Invoke-webrequest -uri "http://google.com" -Method GET; $wa = $response.InputFields.value[0]; -
我也无法复制,我认为你在这里遗漏了一些东西。
-
您是否尝试过使用 -UseBasicParsing 参数?
-
共有三个输入栏。如果不使用 -UseBasicParsing,我会得到所有三个,但如果我使用 -UseBasicParsing,我只会得到其中两个。输入字段之一丢失!
标签: powershell browser powershell-cmdlet