我正在用Powershell编写一些文件,以监视文件“ A”的更改并在打开时打开文件“ B”。唯一的问题是Excel文件(B)具有在打开状态下运行的vba代码,该代码必须复制文件“ A”上的数据。从我的研究看来,我必须打开文件'A'来执行此操作,因为它必须是.xlsx并打开它会启动连续循环。
我已经尝试过sleep命令,但是看起来它在睡眠期间或睡眠之前仍在观看文件,然后在等待了我告诉它的时间后再次打开文件。
如何让观察者停止观看一分钟左右?
这是我目前正在使用的代码:
Function Register-Watcher {
param ($folder)
$filter = "*.xlsx"
$folder = "\\powershell\watcher\test\folder"
$watcher = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $false
EnableRaisingEvents = $true
}
$changeAction = [scriptblock]::Create('
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
Write-Host "The file $name was $changeType at $timeStamp"
$Excel = New-Object -ComObject Excel.Application
$Excel.Workbooks.Open("\\powershell\watcher\test\folder\fileB.xlsm")
sleep 60
')
Register-ObjectEvent $Watcher "Changed" -Action $changeAction
}
Register-Watcher "\\powershell\watcher\test\folder\fileA.xlsx"
$Change
答案 0 :(得分:1)
您可以使用
阻止它引发事件$watcher.EnableRaisingEvents = $false
您可以在此处从Microsoft了解更多信息