Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果外部复制已完成,则继续脚本Powershell_Powershell - Fatal编程技术网

如果外部复制已完成,则继续脚本Powershell

如果外部复制已完成,则继续脚本Powershell,powershell,Powershell,当在我的桌面上更改测试文件夹时,脚本将执行某些操作。 例如 如果我将一些带有子文件夹的文件夹复制到我的测试文件夹中。我设想脚本将等待外部复制完成,然后脚本将继续 此脚本是我的文件夹的监视程序 #<Set Path to be monitored># $searchPath = "C:\Users\Desktop\test" #<Set Watch routine># $watcher = New-Object System.IO.FileSystemWatcher $

当在我的桌面上更改测试文件夹时,脚本将执行某些操作。
例如
如果我将一些带有子文件夹的文件夹复制到我的测试文件夹中。我设想脚本将等待外部复制完成,然后脚本将继续

此脚本是我的文件夹的监视程序

#<Set Path to be monitored>#
$searchPath = "C:\Users\Desktop\test" 

#<Set Watch routine>#
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $searchPath
$watcher.IncludeSubdirectories = $false
$watcher.EnableRaisingEvents = $true

#<Set Events>#
$created = Register-ObjectEvent $watcher "Created" -Action {
   Write-EventLog Application -source Powershell -EventId 54321 -Message "Application will be update"
   write-host "Application will be update $($eventArgs.FullPath)"

 #something what will be wait until copying will 
 done and after that will script continue

   Start-Process powershell -argument '.\done.ps1'
  }

while ($true){ sleep 2}
#<END_SCRIPT>#
##
$searchPath=“C:\Users\Desktop\test”
##
$watcher=新对象System.IO.FileSystemWatcher
$watcher.Path=$searchPath
$watcher.IncludeSubdirectories=$false
$watcher.EnableRaisingEvents=$true
##
$created=注册ObjectEvent$watcher“已创建”-操作{
写入事件日志应用程序-源Powershell-事件ID 54321-消息“应用程序将更新”
写入主机“应用程序将更新$($eventArgs.FullPath)”
#等待复制的东西将被复制
完成后,脚本将继续
启动进程powershell-参数“.\done.ps1”
}
而($true){sleep 2}
##

我认为这不是一个好方法,因为很难确定何时完全完成复制。e、 最后一个文件可能非常大,显示时间可能比其他文件长得多。。。相反,如果您可以控制复制过程,我会查看该过程(而不是文件)并等待它完成:
Start process-wait…
这是不好的,原因有很多。如果您正在监视对文件夹的更改,并试图捕获编程副本,那么建议iRon present可能会起作用——等待拥有副本的进程完成。如果用户正在复制未定义数量的文件,那么您的filesystemwatcher只能在“创建”每个文件时执行操作,因为这是您要挂接的事件。此外,您正在定义的脚本块只能访问单个“已创建”事件数据。它不能在单个事件的上下文中等待复制过程的其余部分…我认为这不是一个好方法,因为很难确定何时完全完成复制。e、 最后一个文件可能非常大,显示时间可能比其他文件长得多。。。相反,如果您可以控制复制过程,我会查看该过程(而不是文件)并等待它完成:
Start process-wait…
这是不好的,原因有很多。如果您正在监视对文件夹的更改,并试图捕获编程副本,那么建议iRon present可能会起作用——等待拥有副本的进程完成。如果用户正在复制未定义数量的文件,那么您的filesystemwatcher只能在“创建”每个文件时执行操作,因为这是您要挂接的事件。此外,您正在定义的脚本块只能访问单个“已创建”事件数据。它不能在单个事件的上下文中等待复制过程的其余部分。。。