C#run powershell脚本(远程启动/停止服务)

时间:2017-08-24 06:08:16

标签: c# powershell remote-access

在C#中,我有一个远程停止并启动服务的脚本。 问题是,只有停止服务。

我需要启动/停止服务,因为必须停止其他服务。 它可能不是ServiceController,因为我已经禁用了WMI。

InitialSessionState initial = InitialSessionState.CreateDefault();
Runspace runspace = RunspaceFactory.CreateRunspace(initial);
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddCommand("Get-Service"); //STOP
ps.AddParameter("ComputerName", textBox7.Text);
ps.AddParameter("Name", "spooler*");
ps.AddCommand("Stop-Service");
ps.AddParameter("force");

//ps.AddCommand("Remove-Item"); //QUEUE

ps.AddCommand("Get-Service"); //START
ps.AddParameter("ComputerName", textBox7.Text);
ps.AddParameter("Name", "spooler*");
ps.AddCommand("Start-Service");

ps.Invoke();

2 个答案:

答案 0 :(得分:1)

哦,我找到了解决方案: 只需要命令之间的Add.Statement。

            ps.AddCommand("Get-Service");
            ps.AddParameter("ComputerName", textBox7.Text);
            ps.AddParameter("Name", "spooler*");
            ps.AddCommand("Stop-Service");
            ps.AddParameter("force");

            ps.AddStatement();
            ps.AddCommand("Get-Service");
            ps.AddParameter("ComputerName", textBox7.Text);
            ps.AddParameter("Name", "spooler*");
            ps.AddCommand("Start-Service");

答案 1 :(得分:0)

您可以像这样使用ServiceController类:

ServiceController sc = new ServiceController("ArcGIS Server", "192.168.36.22");

sc.Start();
sc.Stop();

学分转到: How to restart service remotely?