Powershell 如何使io.SystemFileWatcher无限期运行
我有一个脚本,可以调用两个io.systemfile Watcher,我希望全天候运行该脚本,以便它能够检测需要处理的数据,并自动将其交给处理该数据的脚本(并将结果上载到网络):Powershell 如何使io.SystemFileWatcher无限期运行,powershell,Powershell,我有一个脚本,可以调用两个io.systemfile Watcher,我希望全天候运行该脚本,以便它能够检测需要处理的数据,并自动将其交给处理该数据的脚本(并将结果上载到网络): 我正在考虑把它变成一个windows服务,但它能像现在这样全天候运行吗?我不确定在哪里可以添加无限循环而不创建无限io.systemfilewatchers。我知道作为PS脚本,powershell需要不断运行。但是,如果我创建了一个批处理文件来运行它,并将其设置为nssm的服务,那么这能满足我的需要吗 在任务计划程序
我正在考虑把它变成一个windows服务,但它能像现在这样全天候运行吗?我不确定在哪里可以添加无限循环而不创建无限io.systemfilewatchers。我知道作为PS脚本,powershell需要不断运行。但是,如果我创建了一个批处理文件来运行它,并将其设置为nssm的服务,那么这能满足我的需要吗 在任务计划程序中以1分钟或2分钟的间隔计划脚本。。这样你的工作就可以完成了。您也可以将其创建为服务。但这会导致它每1-2分钟创建一个新的观察程序,或者每1-2分钟仅检查初始观察程序是否仍处于活动状态,如果不在脚本中创建观察程序,则重新启动它们。只需计划脚本在每个时间间隔和任何时候运行,您只需
测试路径
文件是否存在…因此,除了基本测试路径
验证之外,脚本中不需要任何特定的观察者。我相信我确实需要一个观察者,因为有几个文件会激活目标目录上的测试路径,我需要忽略它们,只在添加它们时关注它们。使用NSSM时要非常小心,并确认它来自信誉良好的来源。我在一个客户网站上安装了这个软件,它附带了一个勒索软件病毒,使他们瘫痪。我不得不从头开始重建他们的机器,这花费了我金钱和时间。我建议改为使用Apache Tomcat服务。在任务计划程序中以1分钟或2分钟的间隔计划脚本。。这样你的工作就可以完成了。您也可以将其创建为服务。但这会导致它每1-2分钟创建一个新的观察程序,或者每1-2分钟仅检查初始观察程序是否仍处于活动状态,如果不在脚本中创建观察程序,则重新启动它们。只需计划脚本在每个时间间隔和任何时候运行,您只需测试路径
文件是否存在…因此,除了基本测试路径
验证之外,脚本中不需要任何特定的观察者。我相信我确实需要一个观察者,因为有几个文件会激活目标目录上的测试路径,我需要忽略它们,只在添加它们时关注它们。使用NSSM时要非常小心,并确认它来自信誉良好的来源。我在一个客户网站上安装了这个软件,它附带了一个勒索软件病毒,使他们瘫痪。我不得不从头开始重建他们的机器,这花费了我金钱和时间。我建议改用ApacheTomcat服务。
Function Report1Watcher{
param ($folder)
$filter = "*vac*.csv"
$watcher = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $true
EnableRaisingEvents = $true
InternalBufferSize = 65536
}
Write-Host "Watching $folder for creation of $filter files..."
$changeAction = {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
$Actionpath = Split-Path $Path
write-host $Actionpath " Ready for Report1"
Report1 $Actionpath
write-host $Actionpath " Report1 Generated"
}
Register-ObjectEvent $Watcher -EventName "Created" -Action $changeAction
}
Function Report2Watcher{
param ($folder)
$filter = "*4.4*"
$watcher = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $true
EnableRaisingEvents = $true
InternalBufferSize = 65536
}
Write-Host "Watching $folder for creation of $filter files..."
$changeAction = {
$path = $Event.SourceEventArgs.FullPath
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
$Actionpath = Split-Path $Path
$Actionpath = Split-Path $Actionpath
write-host $Actionpath " Ready for Report2"
Report2 $Actionpath
write-host "Report2 Generated"
}
Register-ObjectEvent $Watcher -EventName "Created" -Action $changeAction
}
Function Watchmaster{
Report1Watcher $Testdir
Report2Watcher $Testdir
}
Watchmaster