使用Powershell永久监视多个NAS文件夹的最有效方法

问题描述

我遇到了问题,到目前为止,我找不到使用Powershell监视多个NAS文件夹的正确方法。基本上,我想永久监视NAS文件夹(不是本地驱动器),并且在创建文件或将文件拖到该文件夹​​时,触发第二批更改以更改所创建文件内容

我的第一个选择是使用FileSystemWatcher。它可以很好地与NAS文件夹配合使用,但我必须保持会话打开状态才能保持监视运行。

PROCESS
{
   foreach  ($item in  $paths)
   { 
      
       $fsw = New-Object IO.FileSystemWatcher $path,$filter -Property @{IncludeSubdirectories = $false}
        Register-ObjectEvent $fsw created -SourceIdentifier ($item + " folderMonitored") -Action     { 
            #Do something when a file is created
        }
    }
}

第二个选择是使用WMI创建永久事件。下面的脚本监视C:\ Test,如果创建了文件,则它将触发LaunchPowerShell.vbs。这可以正常工作,但不适用于NAS路径。

$computer = "edlt"
$filterNS = "root\cimv2"
$wmiNS = "root\subscription"
$query = @"
 Select * from __InstanceCreationEvent within 30 
 where targetInstance isa 'Cim_DirectoryContainsFile' 
 and targetInstance.GroupComponent = 'Win32_Directory.Name="c:\\\\test"'
"@
$filterName = "NewFile"
$scriptFileName = "C:\fso\LaunchPowerShell.vbs"

$filterPath = Set-WmiInstance -Class __EventFilter `
 -ComputerName $computer -Namespace $wmiNS -Arguments `
  @{name=$filterName; EventNameSpace=$filterNS; QueryLanguage="WQL";
    Query=$query}


$consumerPath = Set-WmiInstance -Class ActiveScriptEventConsumer 
 -ComputerName $computer -Namespace $wmiNS `
 -Arguments @{name="CleanupFileNames"; ScriptFileName=$scriptFileName;
  ScriptingEngine="VBScript"}

Set-WmiInstance -Class __FilterToConsumerBinding -ComputerName $computer 
  -Namespace $wmiNS -arguments @{Filter=$filterPath; Consumer=$consumerPath} |
  out-null

是否有使用Powershell永久监视NAS文件夹的解决方案?

有什么想法吗?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)