这是一个普遍的问题,如何解决这个问题。
就我的技术学位而言,我想做一些网站应用程序,它将连接Windows机器,向powershell发送请求,例如获取过程,最后将其显示在网站上。
我不确定是否可以像这样修改PowerShell Web访问,是否还有其他解决方案?
像我可以交流的服务吗?
-mateusz
答案 0 :(得分:1)
您可以使用Powershell运行空间,这是一个示例,但是在您的情况下,可能必须为使用的身份验证方法而对其进行更改...
PSCredential credential = new PSCredential(user, secure_pw);
WSManConnectionInfo connectionInfo = new WSManConnectionInfo();
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Credssp;
connectionInfo.ProxyAuthentication = AuthenticationMechanism.Negotiate;
connectionInfo.OperationTimeout = 4 * 60 * 1000; // 4 minutes.
connectionInfo.OpenTimeout = 1 * 60 * 1000; // 1 minute.
connectionInfo.Credential = credential;
Runspace rs = RunspaceFactory.CreateRunspace(connectionInfo);
rs.Open();
using (PowerShell PowerShellInstance = PowerShell.Create())
{
string hostname = "my-host";
PowerShellInstance.Runspace = rs;
PowerShellInstance.AddScript(string.Format("param([string]$hostname) Get-Process -ComputerName $hostname"))
PowerShellInstance.AddParameter("hostname", hostname);
// invoke execution on the pipeline (collecting output)
Collection<PSObject> PSOutput = PowerShellInstance.Invoke();
// do something with the errors found.
if (PowerShellInstance.Streams.Error.Count > 0)
{
foreach (var error in PowerShellInstance.Streams.Error)
{
Console.WriteLine(error.Exception.Message);
}
}
}
rs.Dispose();
如果这样做,我建议您对PowerShellInstance.AddScript与PowerShellInstance.AddCommand以及必须如何处理参数等进行一些研究。