通过提供Web代理服务器的IP地址和端口来打开远程运行空间

时间:2013-11-11 07:36:11

标签: c# powershell web proxy runspace

我在C#中编写一个.Net组件,需要为Exchange在线打开Remote Powershell连接以执行cmdlet。但是,有一个位于本地计算机和Internet之间的Web代理服务器。我没有在IE中提供代理服务器设置。我需要在打开远程运行空间时以某种方式提供Web代理服务器的IP地址和端口号。

我使用以下代码:

PSCredential credential = new PSCredential(userEmail, securePassword);

connectionInfo = new WSManConnectionInfo(new Uri("https://ps.outlook.com/powershell"), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential);

connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
connectionInfo.MaximumConnectionRedirectionCount = 2;               

runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();

powershell.Runspace = runspace;

//Create the command and add a parameter
powershell.AddCommand("Get-MailboxFolderStatistics");
powershell.AddParameter("identity", sMailbox);
...
...
...
pipeline = remoteRunspace.CreatePipeline()
foreach (Command command in cmdlet.GetCommands())
{
   pipeline.Commands.Add(command);
}
commandResults = pipeline.Invoke();

我应该在Runspace对象的RunspaceconnectionInfo的ProxyAccessType,ProxyCredentials,ProxyAuthentication属性中提供什么。

是否有办法通过提供Web代理服务器设置来打开远程运行空间,而无需在IE中使用代理设置。我想通过我的应用程序中的用户界面将代理服务器ip和port传递给我的api

请建议。

谢谢, GAGAN

2 个答案:

答案 0 :(得分:0)

可以使用New-WSManSessionOption配置代理设置

http://technet.microsoft.com/en-us/library/hh849874.aspx

答案 1 :(得分:0)

例如,如果你想配置代理以使用fiddler,你可以这样做:

PSSessionOption sessionOptions = new PSSessionOption();
sessionOptions.ProxyAccessType = ProxyAccessType.IEConfig;
sessionOptions.ProxyAuthentication = AuthenticationMechanism.Negotiate;
wsManConnectionInfoInstance.SetSessionOptions(sessionOptions);