为什么我无法在 Powershell 中读取远程 AWS 服务器上的此文件?

为什么我无法在 Powershell 中读取远程 AWS 服务器上的此文件?

我在 AWS 中启动了几个服务器,我想使用 Powershell 读取文件的内容。

在服务器 1 上,我创建了一个名为 的文件App_configuration.txt,并将其放在 的根目录中c:\

该文件只有两行:

<Path>C:\GoodToGo</Path>
<Path>C:\GoodToGo2</Path>

我尝试使用服务器的远程 IP 使用此命令访问文件。应该xx.xxx.xx.xxx是远程 IP:

Get-Content -Path "\\xx.xxx.xx.xxx\c$\App_configuration.txt"
Get-Content : Cannot find path '\\xx.xxx.xx.xxx\c$\App_configuration.txt' because it does not exist.
At line:1 char:1
+ Get-Content -Path "\\xx.xxx.xx.xxx\c$\App_configuration.txt"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (\\xx.xxx.xx.xxx\c$\App_configuration.txt:String) [Get-Content], ItemNot
   FoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetContentCommand

我可以通过 RDP 进入远程服务器并列出文件:

PS C:\> ls C:\App_configuration.txt


    Directory: C:\


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         3/2/2021   4:12 PM             51 App_configuration.txt

我在本地计算机上的用户与可以登录远程计算机的用户不是同一个。我尝试访问的服务器位于 AWS 中,我尝试从本地计算机访问它。

我在 AWS 安全组(防火墙)上打开了 powershell 端口5985,并且可以使用 telnet 远程连接到它。

为什么我无法使用此 powershell 行读取此远程文件?我认为问题可能与网络有关。

答案1

使用调用命令Get-Content由于端口已打开,因此可以从内部运行命令5985

否则允许SMB:文件和打印共享或适用的 TCP 端口通过 Windows 防火墙。

PowerShell 远程调用命令

Invoke-Command -ComputerName <IP Address> -ScriptBlock { Process {
    Get-Content -Path "C:\App_configuration.txt"
    }
};

PowerShell 远程调用命令(带凭证)

$cred = Get-Credential "domain\administrator" 

Invoke-Command -ComputerName <IP Address> -ScriptBlock { Process {
    Get-Content -Path "C:\App_configuration.txt"
    }
} -AsJob -Credential $cred;  

支持资源

  • 启用PSRemoting

  • 调用命令

    -ScriptBlock scriptblock

    要运行的命令。

    将命令括在花括号中{ }以创建脚本块。此参数是必需的。

  • 互联网防火墙可以阻止浏览和文件共享

    Microsoft 文件共享 SMB:用户数据报协议 (UDP) 端口 135 至 139 和传输控制协议 (TCP) 端口 135 至 139。没有网络基本输入/输出系统 (NetBIOS) 的直接托管 SMB 流量:端口 445(TCP 和 UPD)。

相关内容