我们都在同一域上,并且两台计算机上都启用了PSRemoting,但是由于某些原因,我的远程脚本无法运行。执行策略不受限制,但这是我收到的消息:
Get-Process : Couldn't connect to remote machine. At line:1 char:1 + Get-Process -ComputerName 10.xxx.xx.xx + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-Process], InvalidOperationException + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetProcessCommand Get-EventLog : The network path was not found. At line:1 char:1 + Get-EventLog -LogName Application -ComputerName 10.xxx.xx.xx + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-EventLog], IOException + FullyQualifiedErrorId : System.IO.IOException,Microsoft.PowerShell.Commands.GetEventLogCommand
我在两台计算机上都运行PSVersion 5.1和PSRemotingProtocolVersion 2.3,有人有什么建议吗?
经过更多研究,我启用了远程服务器管理(WinRM)并允许在两台计算机上进行远程PowerShell访问,对于上面的这些基本cmdlet,它仍然给我以上相同的错误消息,但是它将使我在使用Enter-PSSession
的远程计算机。我在这里很茫然,因为解决方法很不错,但理想情况下,我想实际远程运行脚本。
答案 0 :(得分:0)
如果可以使用Enter-PSSession
,则PSRemoting可以正常工作。但是,Get-Process
和Get-EventLog
都不首先使用PSRemoting进行远程连接。您可以使用Wireshark或WinDump之类的工具检查网络流量,以进行检查。您需要访问远程主机上的端口139 / tcp(NetBIOS会话)和445 / tcp(DirectSMB),cmdlet才能起作用。这些端口可能在远程主机的Windows防火墙中被阻止,因此您需要更改该端口以启用到该主机的远程连接。
如果要使用PSRemoting,则需要通过Invoke-Command
在远程主机上本地调用cmdlet:
Invoke-Command -Computer 10.x.x.x -ScriptBlock {
Get-Process
Get-EventLog -LogName Application
}