调用EXE时无法执行waitforexit

时间:2014-12-31 08:23:14

标签: c# powershell exe invoke-command

我使用下面的代码运行EXE。 EXE正常打开并正常运行。我面临两个问题。

  1. 在调用PowerShell.Invoke时会有类似于Process.WaitforExit()的内容。一旦用户在EXE上完成操作并关闭它,那么剩余的执行应该继续。

  2. EXE的输出来自System.Management.ManagementBaseObject。它应包含可执行结果。

  3. 如果我使用Process.Start运行EXE,我可以实现上述两种结果。输出也正常。请帮忙。

    using (Runspace runSpace = RunspaceFactory.CreateRunspace())
    {
        string remoteScriptPath="e:\shared\test.ex";
        string parameterString="p1";
        runSpace.Open();
        using (Pipeline pipeline = runSpace.CreatePipeline())
        {
            RunspaceInvoke invoke = new RunspaceInvoke();
            PowerShell ps = PowerShell.Create();
            ps.Runspace = runSpace;
            ps.AddCommand("invoke-wmimethod");
            ps.AddParameter("class", "Win32_Process");
            ps.AddParameter("name", "Create");
            if (string.IsNullOrEmpty(parameterString))
            {
                ps.AddParameter("argumentlist", remoteScriptPath);
            }
            else
            {                            
             ps.AddParameter("argumentlist", remoteScriptPath + " " + parameterString);
            }
    
            Collection<PSObject> psOutput = ps.Invoke();
    
            if (ps.Streams.Error.Count == 0)
            {
                string result="";
    
                foreach (PSObject psObject in psOutput)
                {
                    if (psObject != null)
                    {
                        result += psObject.BaseObject.ToString();
                        result += Environment.NewLine;
                    }
                }
                return result;
            }
    

0 个答案:

没有答案