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"}