我已经为此苦苦挣扎了几个小时,但还是搞不清楚。我有两台 Windows 7 计算机。一台是我的工作站,它使用 Powershell 进行管理维护。另一台是我想使用 Powershell 远程处理来执行远程 Powershell 命令的机器。
在两台计算机上,我都启用了 Powershell 远程处理,并使用 * 值将所有计算机添加到 TrustedHosts。在远程计算机上,我启动了远程注册表服务并确保 DCOM、Winmgmt 和 Winrm 服务正在运行。远程计算机上的防火墙也已禁用。
我尝试运行的 cmdlet 是:
Get-Process -ComputerName $name
其中 $name 是远程机器的名称。我一直收到错误消息,提示无法连接到远程 PC。我也尝试使用 IP,但还是收到同样的错误。这些 PC 不在域中。
我可以成功完成以下操作:
Invoke-Command {get-Process} -ComputerName $name -Credential $creds
其中 $name 是机器名称,$creds 是远程计算机本地管理员帐户的用户名和密码。这给了我期望的相同输出。
虽然这是一个可以接受的解决方法,但我很好奇,为什么使用 get-process 进行远程处理不能正常工作?我在网上看到过几篇文章,说人们自己使用它就成功了。
每次我都以提升的权限在工作站上使用 Powershell。
有任何想法吗?
答案1
好吧,恐怕你自己就已经泄露了答案。
您在本地计算机上的管理员帐户在远程计算机上没有管理员权限。
Get-Process
不接受凭证,所以当你运行
Get-Process -ComputerName remoteMachine
您以 的身份进行身份验证localMachine\Administrator
,但当您调用它并提供凭据时,您以remoteMachine\Administrator
答案2
启动远程注册服务,该服务在 Win7 上对我有用。