Invoke remote powershell command from C#

前端 未结 4 1926
野性不改
野性不改 2020-12-07 01:23

I\'m trying to run an invoke-command cmdlet using C# but I can\'t figure out the right syntax. I just want to run this simple command:

invoke-command -Comput         


        
相关标签:
4条回答
  • 2020-12-07 01:56

    You use short format:

    ps.AddParameter("ScriptBlock", ScriptBlock.Create("Get-childitem C:\\Windows"));
    
    0 讨论(0)
  • 2020-12-07 02:01

    An alternative approach in case it maybe more appropriate in some cases.

            var remoteComputer = new Uri(String.Format("{0}://{1}:5985/wsman", "HTTP", "ComputerName"));
            var connection = new WSManConnectionInfo(remoteComputer, null, TopTest.GetCredential());
    
            var runspace = RunspaceFactory.CreateRunspace(connection);
            runspace.Open();
    
            var powershell = PowerShell.Create();
            powershell.Runspace = runspace;
    
            powershell.AddScript("$env:ComputerName");
    
            var result = powershell.Invoke();
    

    https://blogs.msdn.microsoft.com/schlepticons/2012/03/23/powershell-automation-and-remoting-a-c-love-story/

    0 讨论(0)
  • 2020-12-07 02:07

    A scriptblock string should match the format as "{ ... }".Use the follow code will be ok:

    ps.AddParameter("ScriptBlock", "{ get-childitem C:\\windows }");
    
    0 讨论(0)
  • 2020-12-07 02:12

    Ah, the parameter to ScriptBlock itself needs to be of type ScriptBlock.

    full code:

    InitialSessionState initial = InitialSessionState.CreateDefault();
    Runspace runspace = RunspaceFactory.CreateRunspace(initial);
    runspace.Open();
    PowerShell ps = PowerShell.Create();
    ps.Runspace = runspace;
    ps.AddCommand("invoke-command");
    ps.AddParameter("ComputerName", "mycomp.mylab.com");
    ScriptBlock filter = ScriptBlock.Create("Get-childitem C:\\windows");
    ps.AddParameter("ScriptBlock", filter);
    foreach (PSObject obj in ps.Invoke())
    {
       // Do Something
    }
    

    Putting the answer here if someone finds it useful in the future

    0 讨论(0)
提交回复
热议问题