PowerShell脚本复制文件共享文件夹至多台电脑失败求助
问题排查与修复
两段脚本的核心问题如下:
- 均定义了函数但从未调用,代码根本没执行
- 第二段脚本在
ForEach-Object里错误使用$computers变量,应该用$_指代当前循环的单台计算机 - 多余的
New-PSDrive完全没用,反而可能引入权限问题 - 第一段未加
-Recurse参数,无法复制子文件夹;*.*会漏掉无扩展名的文件
修正后的可用脚本
# 读取目标计算机列表 $computers = Get-Content "\\tswkbro\shared\brookscomputers.txt" # 要复制的源文件夹路径(直接指向文件夹,无需*.*) $sourceFolder = "\\tswkbro\shared\abcbrooks-3.0.0.0" # 遍历每台计算机执行复制 foreach ($computer in $computers) { # 先验证目标计算机的C$共享是否可达 if (Test-Path "\\$computer\C$") { Copy-Item -Path $sourceFolder -Destination "\\$computer\C$" -Recurse -Force -Verbose Write-Host "已完成对 $computer 的复制" } else { Write-Warning "无法访问 $computer 的C$共享,请检查网络或权限" } }
关键修正说明
- 移除无用的
New-PSDrive,直接用UNC路径操作更简洁 - 增加
Test-Path提前验证目标共享可达性,避免无效尝试 - 源路径直接指向文件夹,配合
-Recurse完整复制所有内容(含子文件夹、无扩展名文件) - 移除
ErrorAction SilentlyContinue,保留-Verbose便于排查执行问题 - 直接执行逻辑,不再使用未调用的函数
额外注意事项
- 运行脚本的账号需同时拥有源共享的读取权限,以及目标计算机C$共享的写入权限
- 确保目标计算机开启文件共享服务且网络连通
- 若计算机名列表存在空行或无效名称,
Test-Path会给出警告,方便排查
内容的提问来源于stack exchange,提问作者Dwain Randolph
相关产品推荐
相关产品推荐

