我有一个在服务器(测试服务器)上运行的powershell脚本,并读取其客户端(DC1)的日志文件。
在DC1上启用了远程桌面和远程协助。
Get-EventLog System -ComputerName test-server -Source Microsoft-Windows-Winlogon # WORKS
Get-EventLog System -ComputerName DC1 -Source Microsoft-Windows-Winlogon # DOESN'T WORK
我在test-server上运行此脚本。正如您在test-server上读取本地日志文件时所看到的那样工作正常但如果我尝试远程读取DC1的日志文件,则会收到错误“ Get-EventLog:找不到网络路径。”。
错误的屏幕截图:
如何使用Get-EventLog避免此错误并从测试服务器读取DC1的日志文件?
答案 0 :(得分:10)
因此,如果您在尝试远程获取日志文件时遇到此类错误,请参阅清单:
dir \\dc1\c$
以查看您是否可以访问该网址
硬盘。 ( @Shay Levy的建议)Get-Service -ComputerName YOURCOMPUTERNAME
以确定您的身份
允许接触服务。 ( @Shay Levy的建议)以下是此解决方案的屏幕截图:
答案 1 :(得分:9)
启动 RemoteRegistry 服务对我来说没有帮助。
显然,通过某些cmdlet(如Get-Service)中的ComputerName参数访问的远程处理与使用cmdlet(如Invoke-Command)访问的较新远程处理形式之间存在差异。
由于传统的远程访问是由单个cmdlet实现的, 它是不一致的(使用不同的技术和要求不同 要求)并且仅在选定的cmdlet中可用。技术 用于远程访问可以从cmdlet到cmdlet不等 你很高兴知道。每个cmdlet都使用任何远程技术 它的作者选择了。大多数cmdlet使用远程过程调用(RPC),但是 可能还需要目标上的其他服务和设置 系统
从Windows PowerShell 2.0开始,有一个替代版本 访问远程系统的通用方法:Windows PowerShell 远程处理。使用此类型的远程处理,Windows PowerShell可以处理 远程访问所有命令。它将您的命令传输到 远程系统使用相对较新且高度可配置的WinRM service,在一个单独的会话中执行代码 远程系统,并将结果返回给调用系统。
当我从这个命令交换时
get-eventlog -LogName System -computername <ServerName>
到这个
invoke-command {get-eventlog -LogName System} -ComputerName <ServerName>
我不再收到以下错误
get-eventlog:找不到网络路径。