触发FileSystemWatcher时如何获取文件大小?

时间:2019-06-28 07:40:01

标签: powershell file size filesystemwatcher

在统计信息的指定文件夹中创建文件时,我需要获取文件的大小。我尝试了不同的解决方案,我发现最好的解决方案是该解决方案,但是它总是返回0而不是文件大小。

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\Users\GUFE\Desktop"
$watcher.Filter = "*.pdf*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true  


$action = { $path = $Event.SourceEventArgs.FullPath
            $changeType = $Event.SourceEventArgs.ChangeType
            $size = (Get-Item '$path').length
            $logline = "$(Get-Date), $changeType, $path, $size"
            Add-content "C:\Users\GUFE\Desktop\log2.txt" -value $logline
          }    

Register-ObjectEvent $watcher "Created" -Action $action
while ($true) {sleep 5}

现在,我只是将信息放在日志文件中,以查看是否获得正确的信息。

预先感谢您的回答。

1 个答案:

答案 0 :(得分:1)

问题出在这一行:

$size = (Get-Item '$path').length

由于$path位于单引号内,因此未启用字符串插值,因此Get-Item实际上是在查找名为“ $ path”的文件,该文件显然不存在。请不要使用双引号或双引号:

$size = (Get-Item $path).length