我是活动目录中的用户,并且此活动目录外有一台远程计算机。 我想在这台电脑上启动和停止服务。 当然是拥有本地管理员的凭据。
var startService = new Process
{
StartInfo =
{
FileName = "sc.exe",
Arguments = String.Format("{0} {1} {2}", "\\192.168.0.5", "stop", "TestService"),
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true,
UserName = "user",
Password = securePassword,
Domain = "localhost"
}
};
try
{
startService.Start();
}
catch (Exception e)
{
return false;
}
它引发了一个例外,即瑕疵是错误的。
未知用户名或密码错误
我尝试将StartInfo.Domain设置为远程计算机名称,但这也不起作用。
需要一些帮助。
答案 0 :(得分:0)
远程端
Enable-PSRemoting -Force
客户端
Invoke-Command -ComputerName ServerName -Credential Get-Credential -ScriptBlock {ls c:\}
在ScriptBlock中我可以使用例如Get-Service Command用于控制远程端的服务。
在C#中它会像这样锁定
// Install-Package System.Management.Automation
var credential = new PSCredential("User", securePassword);
PowerShell ps = PowerShell.Create();
ps.AddCommand("Invoke-Command");
ps.AddParameter("ComputerName", "ComputerName");
ps.AddParameter("Credential", credential);
ps.AddParameter("ScriptBlock", ScriptBlock.Create("Get-Service -Name ServiceName"));
var result = ps.Invoke();
dynamic temp = result.First();
var status = temp.Status;