Powershell脚本赢得';当程序创建新文件时,请不要通知我

Powershell脚本赢得';当程序创建新文件时,请不要通知我,powershell,Powershell,编辑:部分解决。当我关闭xlsx时工作。过滤器-即使新文件是xlsx并且应该注册 我试图让powershell在程序在文件夹中创建新excel文件时执行操作 当我创建一个新文件时,或者当有权访问该文件夹的其他用户创建一个新文件时,但当该文件由程序创建时(SAS Customer Intelligence Studio),脚本用于执行操作。程序中的文件是正确的文件类型(.xlsx),但创建时不会执行任何操作 以下是脚本: $folder = '\\myexportfolder' $filter =

编辑:部分解决。当我关闭xlsx时工作。过滤器-即使新文件是xlsx并且应该注册

我试图让powershell在程序在文件夹中创建新excel文件时执行操作

当我创建一个新文件时,或者当有权访问该文件夹的其他用户创建一个新文件时,但当该文件由程序创建时(SAS Customer Intelligence Studio),脚本用于执行操作。程序中的文件是正确的文件类型(.xlsx),但创建时不会执行任何操作

以下是脚本:

$folder = '\\myexportfolder'
$filter = '*.xlsx'         

$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $false             
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { 
Invoke-Expression C:\PSscript\Action.ps1
}

你在这方面做了足够多的调试,让我怀疑程序是否真的在转储一个xlsx文件,而是一些不同的东西,可能会在事后变成一个?我不知道SAS Customer Intelligence Studio的任何情况,但是如果您可以手动触发操作,那么我就知道您使用的过滤器有问题

考虑删除过滤器并进行后期处理,或者使用类似于查找目录中实际创建内容的程序

获得相同信息的一个更简单的方法是遵循的建议(我应该想到:()


将筛选器设置为
如果将
写入主机$args[1]。FullName
添加到
Register ObjectEvent
脚本块,则可以看到触发事件的文件的完整路径和扩展名。 其他人可能会有更好的主意


删除筛选器时会发生什么情况?它是否会拾取程序文件转储?尝试将筛选器更改为“.”,这启动了操作!但是,该文件确实是一个xlsx文件,因此没有理由不与筛选器一起工作。也许该文件最初不是作为xlsx创建的?只是尝试帮助调试您可能是正确的在任何情况下,我都可以接受在所有新文件上运行的操作,只要在过滤器设置为
”的情况下为文件类型创建一个条件。
如果您添加
写入主机$args[1].FullName
到您的
注册ObjectEvent
脚本块,您可以看到触发事件的文件的完整路径和扩展名。请参见和。回想一下,在某个位置有一个.bat文件,不记得是什么时候。但是,是的,它可能是一个.bat文件,之后会更改为excel,因此不会注册作为一个新的xlsx文件。