为什么我的PowerShell控制台会显示“;“未启动”;在我更改文件并创建文件之后,我会重复。(使用filesystemwatcher)

为什么我的PowerShell控制台会显示“;“未启动”;在我更改文件并创建文件之后,我会重复。(使用filesystemwatcher),shell,powershell,cmd,filesystemwatcher,ps1,Shell,Powershell,Cmd,Filesystemwatcher,Ps1,我对在ps1文件中编写脚本相当陌生,我认为一切都会顺利进行,但现在我遇到了一些问题。我正在写一个脚本来监视文件夹和文件夹中的文件(更改、更新、创建)。触发事件时,操作应启动运行.exe的进程。脚本应该连续循环。 我的exe启动有问题;就好像filesystemwatcher不识别我更改、更新或创建的文件一样。 我将非常感谢你们的帮助,谢谢 while($true){ ### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS $watcher =

我对在ps1文件中编写脚本相当陌生,我认为一切都会顺利进行,但现在我遇到了一些问题。我正在写一个脚本来监视文件夹和文件夹中的文件(更改、更新、创建)。触发事件时,操作应启动运行.exe的进程。脚本应该连续循环。 我的exe启动有问题;就好像filesystemwatcher不识别我更改、更新或创建的文件一样。 我将非常感谢你们的帮助,谢谢

while($true){
### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS 
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\BigData\COLLECTION_A\L_READ"
$watcher.Filter = "*.xlsx*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true  
$watcher.NotifyFilter =  [IO.NotifyFilters]'LastAccess,LastWrite,FileName,DirectoryName'

### DECIDE WHICH EVENTS SHOULD BE WATCHED 
Register-ObjectEvent $watcher "Created" -Action $action
Register-ObjectEvent $watcher "Changed" -Action $action
Register-ObjectEvent $watcher "Renamed" -Action $action

### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
$action = { Start-Process C:\Users\sammy\Documents\parsing Engine 1.0.exe}     
sleep 2}

您将看到Register ObjectEvent的输出。由于PSEventJob刚刚创建,尚未(通过事件)调用,因此您将其视为未启动

PS> Get-Job 4

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
4      e04ec31b-c2b...                 NotStarted    False                                ...                 
一旦事件从FileSystemWatcher触发,您将看到它转换为正在运行

PS> Get-Job 4

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
4      e04ec31b-c2b...                 Running       True                                 ...                      
我通常通过将Register ObjectEvent的输出发送到$null来吞咽它,因为如果它们没有触发,我不关心它们

### DECIDE WHICH EVENTS SHOULD BE WATCHED 
$null = Register-ObjectEvent $watcher "Created" -Action $action
$null = Register-ObjectEvent $watcher "Changed" -Action $action
$null = Register-ObjectEvent $watcher "Renamed" -Action $action

您将看到Register ObjectEvent的输出。由于PSEventJob刚刚创建,尚未(通过事件)调用,因此您将其视为未启动

PS> Get-Job 4

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
4      e04ec31b-c2b...                 NotStarted    False                                ...                 
一旦事件从FileSystemWatcher触发,您将看到它转换为正在运行

PS> Get-Job 4

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command                  
--     ----            -------------   -----         -----------     --------             -------                  
4      e04ec31b-c2b...                 Running       True                                 ...                      
我通常通过将Register ObjectEvent的输出发送到$null来吞咽它,因为如果它们没有触发,我不关心它们

### DECIDE WHICH EVENTS SHOULD BE WATCHED 
$null = Register-ObjectEvent $watcher "Created" -Action $action
$null = Register-ObjectEvent $watcher "Changed" -Action $action
$null = Register-ObjectEvent $watcher "Renamed" -Action $action

谢谢你,斯蒂芬。谢谢你的澄清谢谢Stephen。谢谢你的澄清