我有一个脚本,我在我的工作中运行,使用get-childitem
获取存储驱动器中某种类型的所有文件,然后对它们进行排序并将它们移动到存档驱动器。我希望自动化这个过程每天运行一次,但我意识到这样做会有问题。
有时,运行此脚本时,仍会有一两个文件正在转移到我们的存储驱动器。如果我让脚本在仍然从我们的客户传输时移动该文件,它会被破坏并且稍后无法打开。
我知道如何根据文件类型和日期以及其他基本参数进行过滤,但我并不完全确定如何告诉此脚本排除当前大小不断增加的文件。
以下是我目前用于过滤我想要移动的内容的内容:
$TargetType = "*.SomeFileType"
$TargetDrive = "\\Some\UNC\Path"
Get-ChildItem $targetdrive\$targettype | ForEach-Object {$_.fullname} | Sort-Object | out-file $outStorageMove
此外,目前我将get-childitem
找到的所有内容放入文本文件中,稍后会调用该文件,以便我可以手动编辑我想要移动的内容。如果可能的话,我想摆脱这一步。
答案 0 :(得分:0)
因此,移动本质上是复制和删除。
所以,就像gvee state一样,Copy-Item是一个更好的选择,让你超越你声明的关注,监控副本完成。我的补充是在复制完成后删除,并且您已经验证了副本。
或者使用Bits作为工作来完成此任务。
使用Windows PowerShell创建BITS转移作业 https://msdn.microsoft.com/en-us/library/windows/desktop/ee663885(v=vs.85).aspx 您可以使用PowerShell cmdlet创建同步和异步后台智能传输服务(BITS)传输作业。
本主题中的所有示例都使用Start-BitsTransfer cmdlet。要使用cmdlet,请务必先导入模块。要安装模块,请运行以下命令:Import-Module BitsTransfer。有关更多信息,请在PowerShell提示符下键入Get-Help Start-BitsTransfer。