2015-01-13 41 views
0

我想通過cmd(或powershell)使用sc來管理遠程計算機上的服務,例如,使用sc.exe通過顯式用戶帳戶管理遠程主機服務?

sc \\hostname query service_name 

我需要使用特定的用戶帳戶進行此連接,這點我明白,我可以通過登錄到我的工作站用戶,並從上下文中運行cmd做。

不過,我要指定在命令行中使用的帳戶,是這樣的:

sc username:password \\hostname query service_name 

這可能嗎? sc似乎隱含地使用當前的windows身份驗證,並且我不確定如何輕鬆切換此操作,或者實際上是在執行此身份驗證(因此要查看如何更改當前用戶以查找單個特定命令)。

感謝所有幫助

回答

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) 

退房的msdn reference

+0

它會出現'$ service = gwmi win32_service -computername hostname | ? {$ _。name -eq「service_name」}'還需要驗證一些描述?從那一行開始,我得到了'NotSpecified:([Get-WmiObject],UnauthorizedAccessException')的響應,所以它甚至不需要帶有所需的用戶名/密碼的.change方法。感謝 – ricky116

+0

您需要在管理員提升的控制檯中運行腳本,並使用在遠程計算機上具有管理權限的帳戶進行工作 – arco444

+0

嗯,這是關鍵所在 - '擁有管理員權限的帳戶遠程計算機' - 通過你的意思是我登錄到我的本地窗口(和運行PowerShell的權利)的帳戶?我期待說「爲這個命令我想登錄到本地窗口作爲X:Y」其中X:Y有管理員訪問遠程機器,但我通常使用本地Windows帳戶不.. – ricky116

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 
} 
0

附加到已經提供偉大的答案,另一種方式我已經發現這樣做是使用優秀工具CPAU(這可能與幕後的其他答案類似)。

這似乎從一個不同的安全上下文中運行一個.BAT,所以在我的情況我執行:

.\CPAU\CPAU.exe -u DOMAIN\USERNAME-p PASSWORD -k -ex ".\restart_service.bat" > null 

其中restart_service.bat使用正SC命令,但現在從不是域不同的用戶帳戶一個我登錄到我的桌面。

謝謝

相關問題