网站与Windows之间的通讯

时间:2018-06-25 12:05:24

标签: windows powershell web

这是一个普遍的问题,如何解决这个问题。

就我的技术学位而言,我想做一些网站应用程序,它将连接Windows机器,向powershell发送请求,例如获取过程,最后将其显示在网站上。

我不确定是否可以像这样修改PowerShell Web访问,是否还有其他解决方案?

像我可以交流的服务吗?

-mateusz

1 个答案:

答案 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以及必须如何处理参数等进行一些研究。