PowerShell 脚本自行打开浏览器

sar*_*jan 4 browser powershell cmdlet

以下代码是一个 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];
Run Code Online (Sandbox Code Playgroud)

如何让脚本不打开浏览器?

注意:它发送 post 请求,该请求通过 get 请求返回到相同 uri 的重定向,并使用我试图存储在变量中的一些表单值进行响应。

sar*_*jan 7

所以我发现Powershell使用计算机默认浏览器的解析器来解析HTML。这就是它打开浏览器的原因。使用 -UseBasicParsing 属性可以利用 powershell 的 HTML 解析器。事实证明,至少对于上述情况,Powershell 的解析器还不够好!