Powershell 命令通过 FTP 将文件从服务器传输到网络上的选定 PC

Powershell 命令通过 FTP 将文件从服务器传输到网络上的选定 PC

TLDR:我需要将一个大文件从服务器移动到与其连接的多台 SELECT 机器的桌面。

网络拓扑:

  • 1 个服务器
  • 5 - 20 台联网 PC

这种布局在我工作的所有远程网络中都很常见。有时,我必须将文件放在网络上的每台机器上;有时只需放在站点管理员使用的几台机器上。

我始终在服务器上保留该文件的“主副本”,目前通过 RDP 连接到我需要它的每台机器(一旦我解析 IP 以确保它们不是打印机/平板电脑/手机/等...),并将我需要的文件从服务器复制到连接的机器(目录是标准的)。经过研究,我认为 PS 脚本可能可以满足我的需要,但我只知道足够多的东西,以免造成危险。

我使用以下命令将 IP 解析为主机名,以便确定需要将其放在哪些机器上:

@echo off
setlocal EnableDelayedExpansion
set "xNext="
set "xComputer="
for /f %%A in ('net view /all') do (
set "xComputer=%%~A"
if "!xComputer:~0,2!"=="\\" for /f "tokens=2,* delims=. " %%X in ('nslookup %%A') do (
    if "!xNext!"=="1" (
        echo.!xComputer! = %%X.%%Y
        set "xNext=0"
    )
    if "!xComputer:~2!"=="%%~X" set "xNext=1"
)
)
endlocal
pause

我希望能够使用此代码的输出来构建 IP 列表,然后通过 FTP 将文件发送到 IP 的公共目录C:/Folder。我可以ComputerList.txt使用 IP 构建并使用它,但我不太清楚如何集成它。

答案1

如果您只需要在本地复制文件而不需要 FTP,则可以使用复制命令(copy、xcopy、robocopy)。从对象创建一个 powershell 数组,然后使用 foreach cmdlet 并使用 robocopy 将文件复制到每个工作站。类似以下行:

Get-Content c:\machines_List.txt | Foreach-Object {robocopy c:\source \\$_\c$\folder filename.exe"}

答案2

值得庆幸的是,您不需要在这里重新发明轮子。使用 WinSCP。这是文档的链接:

WinSCP - 从 PowerShell 使用

如果您在查看此文档后需要帮助,请通过发表评论告知我。

相关内容