Как я могу получить размер файла, когда он запускает FileSystemWatcher? - PullRequest
0 голосов
/ 28 июня 2019

Мне нужно получить размер файла, когда он создается в указанной папке для статистических целей.Я пробовал разные решения, лучшее, что я нашел, это одно, но оно всегда возвращает 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 Ответ

1 голос
/ 28 июня 2019

Проблема в этой строке:

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

Поскольку $path находится внутри одинарных кавычек, интерполяция строк не включена, поэтому Get-Item буквально ищет файлназывается '$ path', который, очевидно, не существует.Вместо этого не используйте кавычки или двойные кавычки:

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

...