首页 > 解决方案 > 使用变量将文件从一个位置复制到多个使用 Powershell

问题描述

所以我有一个文件,我想使用 powershell 从一个位置传输到网络上的多台计算机,这就是我目前所拥有的。

robocopy "\\PTFGW-061403573\c$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup" 
"\\$onlineComputers\c$\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup" /mir /r:1 /o:0

当我运行它时,它说找不到位置,我可以确认该变量包含其中的所有在线计算机。有任何想法吗?

标签: powershellfilecopystartup

解决方案


齐齐,

这是一些应该做你想做的代码。它将 copy-item 命令放入 TRY/Catch 构造中,以捕获和报告复制过程中的任何错误。我假设您的源(启动)上的最后一项是一个文件夹,因此需要 $CIArgs 中的 Recurse 参数。如果它不是文件夹,请删除 Recurse 行。我还打破了您的路径,以减少重复并使事情更容易改变。注意:我在对等 LAN 上进行了测试,应该可以在基于域的 LAN 上运行。

$onlineComputers = "Computer1","ComputerN"
$FSBase = "C$\ProgramData\Microsoft\Windows\Start Menu\Programs"

$OnlineComputers  | 
   ForEach-Object {

 Try {
        $CIArgs = 
          @{Path        = "\\PTFGW-061403573\$FSBase"
            Destination = "\\$_.\$FSBase\Startup"
            Force       = $True
            Recurse     = $True
            ErrorAction = 'Stop'}
        Copy-Item @CIArgs
       }
       Catch {
             Write-Host @"
Could not write to: $_.
"@
       } #End Catch

} #End ForEach...

高温高压


推荐阅读