将文件移动到脱机计算机

时间:2018-03-16 11:15:18

标签: powershell

我创建了以下脚本,以便将文件发送给业务中的特定用户,此脚本可以正常运行。

$a = Get-Content "C:\Powershell\srvlist.txt" 
foreach ($i in $a) {
    $files = get-content "C:\Powershell\filelist.txt"
    foreach ($file in $files) {
        Copy-Item $file -Destination \\$i\Apps -force
    }
}

要发送的计算机的目的地也包含在srvlist.txt

unit123\c$\users\jamesfegan\
unit124\c$\users\timhobon\

,要传输的文件存储在filelist.txt

C:\Powershell\testfile.exe

然而,有些用户离线工作,只有在连接到VPN后才会显示在我们的网络上,因此我们要确保如果计算机无法访问,则该计算机会在下次联机时立即出现。

如果unit124显示为脱机且不在现场,是否有办法缓存此命令,以便文件可以在下次连接到网络后立即发送?

1 个答案:

答案 0 :(得分:1)

据我所知,没有办法“删除”命令,但是,您可以使用“while”命令连续循环所有未成功将所有文件移动到的计算机。 / p>

试试这个。

$SvrsTarget    = Get-Content "C:\Powershell\srvlist.txt"
$SvrsFiles     = get-content "C:\Powershell\filelist.txt"
$SvrsCompleted = 0
While ($SvrsTarget.Count -NE 0) {
    foreach ($Server in $SvrsTarget) {
        $SvrsError = $False
        foreach ($file in $files) {
            Try {
                Copy-Item $file -Destination \\$Server\Apps -force
            } Catch {$SvrsError = $True}
        }
        IF ($SvrsError -EQ $False) {$SvrsTarget.Remove($Server)}
    }
}

但正如其他人所说,有更好的方法来实现这一目标。用户拉动文件几乎总是比试图推出文件更好。

  • 您可以使用组策略运行启动脚本,以便在计算机登录以运行powershell脚本并写入共享驱动器上的日志文件时,您可以稍后查看。
  • 计划任务可以运行RoboCopy,以便在通过操作重试尝试与网络连接到共享驱动器时立即下载文件。等待尝试之间。