如何使远程PowerShell脚本运行? Enable-PSRemoting不起作用

时间:2018-12-07 00:28:01

标签: powershell-remoting powershell-v5.0

我们都在同一域上,并且两台计算机上都启用了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的远程计算机。我在这里很茫然,因为解决方法很不错,但理想情况下,我想实际远程运行脚本。

1 个答案:

答案 0 :(得分:0)

如果可以使用Enter-PSSession,则PSRemoting可以正常工作。但是,Get-ProcessGet-EventLog都不首先使用PSRemoting进行远程连接。您可以使用WiresharkWinDump之类的工具检查网络流量,以进行检查。您需要访问远程主机上的端口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
}