Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C在远程计算机上执行powershell脚本#_C#_Powershell_Botframework - Fatal编程技术网

C# 使用C在远程计算机上执行powershell脚本#

C# 使用C在远程计算机上执行powershell脚本#,c#,powershell,botframework,C#,Powershell,Botframework,我已使用Microsoft Bot Framework创建了一个Bot应用程序,并希望实现以下目标: 在远程计算机上执行Powershell脚本而无需任何身份验证 powershell脚本将托管在Azure或数据库上(可能是任何) 到目前为止,我已经做了以下工作: 能够在远程计算机上手动执行Powershell脚本 能够使用C代码在本地执行Powershell脚本 以下是我目前的代码: WSManConnectionInfo connectioninfo = new WSManConnectio

我已使用Microsoft Bot Framework创建了一个Bot应用程序,并希望实现以下目标:

  • 在远程计算机上执行Powershell脚本而无需任何身份验证
  • powershell脚本将托管在Azure或数据库上(可能是任何)
  • 到目前为止,我已经做了以下工作:

  • 能够在远程计算机上手动执行Powershell脚本
  • 能够使用C代码在本地执行Powershell脚本
  • 以下是我目前的代码:

    WSManConnectionInfo connectioninfo = new WSManConnectionInfo();
    connectioninfo.ComputerName = "<remote computer hostname>";
    Runspace runspace = RunspaceFactory.CreateRunspace(connectioninfo); 
    //runspace.Open();
    using (PowerShell ps = PowerShell.Create())
    { 
       var re = ps.AddScript("Get-Service"); 
       var results = re.Invoke(); 
    }
    
    WSManConnectionInfo connectioninfo=newwsmanconnectioninfo();
    connectioninfo.ComputerName=“”;
    Runspace Runspace=RunspaceFactory.CreateRunspace(connectioninfo);
    //Open();
    使用(PowerShell ps=PowerShell.Create())
    { 
    var re=ps.AddScript(“获取服务”);
    var results=re.Invoke();
    }
    
    我认为您缺少了
    PowerShell
    实例与运行空间的绑定

    ps.Runspace = runspace;
    
    查看以了解更多详细信息

    或者,您可以使用运行空间创建管道(如上所述)并调用命令

    Pipeline pipeline = runspace.CreatePipeline("<COMMAND TO EXECUTE REMOTELY>");
    
    var results = pipeline.Invoke();
    
    Pipeline-Pipeline=runspace.CreatePipeline(“”);
    var results=pipeline.Invoke();
    
    谁是远程计算机的所有者?它们是否完全在您的控制范围内?您是否管理它们的安全策略?如果远程计算机已启用,您可以使用。嗨,Dylan/James,我不是远程计算机的所有者。我将创建一个管理员与机器人可以登录到远程计算机和做管理的东西。Invoke命令在powershell窗口和手动干预下运行良好。我正在寻找一种通过C代码实现自动远程处理的方法。@zee你现在碰巧解决了这个问题吗?我和你的情况完全一样。在这方面真的需要帮助…在ps.addCommand执行方式上使用管道是否有任何赞成/反对意见?