我想以其他用户的身份针对网络目标执行 SC 命令。我需要能够在命令行上指定用户名和密码,因为这是为了编写脚本。但是,我没有在 SC 上看到以其他用户身份执行命令的选项。我看到了接受用户名的“obj”选项,但这似乎是用于设置服务本身应在其下运行的用户帐户。
如果没有办法改变执行的用户上下文,是否有另一个命令可以让我以脚本方式创建/启动/停止 Windows 服务(从 TeamCity 调用)
答案1
使用“RunAs”命令行工具,它允许您提供明确的凭据集,并支持“域\用户名”和 UPN 格式,允许您以另一个用户的身份进行身份验证并运行您的命令:
Runas /user:Domain\user "sc \\remoteServer stop serviceKeyName"
选择:
设置计划任务使用特定的登录帐户
答案2
最终安装并使用了 PsExec -http://technet.microsoft.com/en-us/sysinternals/bb897553. 允许内联指定用户名/密码,因此可以编写脚本。
答案3
在 PowerShell 中:
(get-wmiobject win32_service -comp servername -cred domain\user -filter "name='browser'").stopservice()
-cred
还会弹出一个凭证对话框
用适当的值替换和servername
。domain\user
name=
您-cred
甚至可以使用存储的凭证。