问题描述
我遇到了问题,到目前为止,我找不到使用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 (将#修改为@)