我想使用sc
通过cmd(或powershell)管理远程计算机上的服务,例如
sc \\hostname query service_name
我需要使用特定的用户帐户来建立此连接,我知道我可以通过以用户身份登录我的工作站并从该上下文运行cmd
来完成此操作。
但是,我想在命令行中指定要使用的帐户,例如:
sc username:password \\hostname query service_name
这可能吗? sc
似乎隐含地使用当前的Windows身份验证,并且我不确定如何轻松地切换它,或者实际上正在执行此身份验证(因此在哪里查找如何更改当前用户执行单个特定命令。)
感谢您的帮助
答案 0 :(得分:1)
我建议使用*-Service
cmdlet而不是sc.exe
。
PS C:\> Get-Command -Noun Service | select Name
Name
----
Get-Service
New-Service
Restart-Service
Resume-Service
Set-Service
Start-Service
Stop-Service
Suspend-Service
您可以使用Invoke-Command
在具有不同凭据的远程主机上运行它们:
$cred = Get-Credential
Invoke-Command -Computer server -Credential $cred -ScriptBlock {
Get-Service
}
答案 1 :(得分:0)
您可以使用PowerShell和WMI远程执行此操作:
$service = gwmi win32_service -computername hostname | ? { $_.name -eq "service_name" }
$service.change($null,$null,$null,$null,$null,$false,"username","password",$null,$null,$null)
答案 2 :(得分:0)
除了已经提供的好答案之外,我发现的另一种方法是使用优秀的工具CPAU(这可能与幕后的其他答案类似)。
它似乎从不同的安全上下文运行.bat,所以在我的情况下我执行:
.\CPAU\CPAU.exe -u DOMAIN\USERNAME-p PASSWORD -k -ex ".\restart_service.bat" > null
其中restart_service.bat
使用常规sc命令,但现在来自域上的其他用户帐户,而不是我登录桌面的用户帐户。
由于