请问您如何建议查找使用特定服务帐户启动Windows服务的所有服务器?
我正在使用以下代码在PowerShell中进行尝试:
Clear-Host
$address = Get-Content '.\asg connections.csv'
$serviceName = "startname='NT AUTHORITY\\LocalService'"
gwmi Win32_Service -Filter $serviceName -Computer $address
上面的代码适用于“ localhost”,但对于远程主机却出现以下错误:
gwmi : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) At F:\Temp\powershell\play.ps1:30 char:1 + gwmi win32_service -filter $serviceName -computer $address + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
答案 0 :(得分:-1)
在使用PowerShell远程处理时,您暗中尝试使用凭据,因此当前Windows会话已登录到目标计算机上的计算机中。
您似乎对这些计算机上的当前凭据集没有任何权利。
目标计算机是否与您当前的用户凭据加入了相同的域?
如果您拥有一套可以使用的工作凭证,则可以使用它们登录到这些计算机上,可以使用以下命令将其添加到命令中:
Clear-Host
#Promts you for the username and password you wish to save to a credential object
$Cred = Get-Credential
$address = Get-Content '.\asg connections.csv'
$serviceName = "startname='NT AUTHORITY\\LocalService'"
gwmi Win32_Service -Filter $serviceName -Computer $address -Credential $Cred
如果脚本需要自动运行,则有几种不同的方式可以将凭据密码保存到加密的文本文件中,该文本文件只能由对其进行加密的用户帐户解密,或者使用Windows Credential Vault中的版本。