我创建了以下脚本,以便将文件发送给业务中的特定用户,此脚本可以正常运行。
$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
显示为脱机且不在现场,是否有办法缓存此命令,以便文件可以在下次连接到网络后立即发送?
答案 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)}
}
}
但正如其他人所说,有更好的方法来实现这一目标。用户拉动文件几乎总是比试图推出文件更好。