我有一个测试 .Net core 3.1 c# 控制台应用程序,它创建一个新的运行空间并运行一个 powershell 脚本。
var Session = InitialSessionState.CreateDefault();
Session.ImportPSModule("MicrosoftTeams");
var pool = RunspaceFactory.CreateRunspacePool(Session);
poo.Open();
using (PowerShell ps = PowerShell.Create())
{
ps.Runspacepool = pool;
ps.AddScript(ScriptContents);
var x = await ps.InvokeAsync();
}
测试 powershell 脚本的内容如下所示
$proxyserver = "http://myproxy:8080";
[system.net.webrequest]::DefaultWebProxy = New-Object system.net.webproxy($proxyserver)
[system.net.webrequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$pass = ConvertTo-SecureString "xxxx" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList "user",$pass
$a = get-Credential -Credential $cred
Connect-MicrosoftTeams -Credential $a
如果这个 powershell 脚本是通过标准的 powershell 会话启动的,它会按预期工作,被重定向到 HTTP 代理并成功连接。但是,如果它是从 C# 应用程序中启动的,则一切正常,除了它没有被重定向到代理。
我不确定我在这里做错了什么。有没有更好的方法来实现代理覆盖?