如何使用PowerShell查找文件大小

时间:2017-12-07 22:32:57

标签: powershell

我们正在迁移服务器,有时候各种文件的副本不会成功发生,例如,我们最终会得到1kb而不是实际大小的PDF文件。

我编写了一个简单的PowerShell脚本来查找这些文件,但它还在搜索结果的末尾列出了空子文件夹。所以我会在输出文本文件中看到类似的内容 - C:\路径\ filename1.pdf C:\路径\ filename2.pdf C:\路径\的子文件夹\

我想要做的是消除结果中的空文件夹。我修改了原始脚本 -

Clear
$username = $env:username
Get-ChildItem -path "C:\users\blah\blah\blah\" -recurse | Where 
{$_.Length -lt 1025 } | Sort-Object length | ft fullname, length -AutoSize 
|Out-File "C:\Users\$username\Desktop\1kb_Files.txt"

在修改过的脚本中,我创建了一个读取主机来获取要搜索的文件大小,但是当我将该变量添加到脚本中时,我得到一个错误。这是修改后的脚本 -

$Size = Read-Host "Enter search size"
$folder = Read-Host "Enter full search path"
Get-ChildItem -path $folder -recurse |Where {($_.Length -lt '$size') -and ($_.Length -gt '0')}

但现在我收到此错误 - 无法将值“$ size”转换为“System.Int64”类型。错误:“输入字符串的格式不正确。”

我猜我需要定义$ size的大小?

1 个答案:

答案 0 :(得分:0)

如果添加开关" -File"在get-childitem命令中,删除where命令中包含$ Size的单引号,因为它们阻止PowerShell将Size变量的值替换为字符串' $ Size'。然后,您可以删除where语句的第二个子句,如下所示:

$Size = Read-Host "Enter search size"
$folder = Read-Host "Enter full search path"
Get-ChildItem -File -Recurse -Path $folder | Where $_.Length -lt $Size