在统计信息的指定文件夹中创建文件时,我需要获取文件的大小。我尝试了不同的解决方案,我发现最好的解决方案是该解决方案,但是它总是返回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}
现在,我只是将信息放在日志文件中,以查看是否获得正确的信息。
预先感谢您的回答。
答案 0 :(得分:1)
问题出在这一行:
$size = (Get-Item '$path').length
由于$path
位于单引号内,因此未启用字符串插值,因此Get-Item
实际上是在查找名为“ $ path”的文件,该文件显然不存在。请不要使用双引号或双引号:
$size = (Get-Item $path).length