powershell - 在远程主机上查找服务帐户
问题描述
您能否建议如何找到使用特定服务帐户启动 Windows 服务的所有服务器?
我正在使用以下代码在 PowerShell 中尝试此操作:
Clear-Host
$address = Get-Content '.\asg connections.csv'
$serviceName = "startname='NT AUTHORITY\\LocalService'"
gwmi Win32_Service -Filter $serviceName -Computer $address
上面的代码适用于“localhost”,但对远程主机给出以下错误:
gwmi : 访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED)) 在 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
解决方案
当您使用 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 中的构建。
推荐阅读
- c++ - 参数包参数类型
- tensorflow - 如何将 TF 对象检测模型转换为 tf.keras?
- java - Android 应用内更新不断要求更新
- java - 使用 ExecutorService 详细说明大列表中的项目
- raspberry-pi - OpenCV 无法在生产服务器上捕获帧(Nginx + uWSGI)
- python - 如何在 Flask-MonitoringDashboard 中记录自定义数据?
- node.js - 如何在sequelize中设置两个表的关联?
- python - 如何在 TradingView 中使用 python 请求生成警报?
- c++ - 为什么这个 HTTP 响应流会产生解析错误?
- python - UpdateView 不保存数据,在 url 中返回对象字段数据