【发布时间】:2017-12-22 16:23:39
【问题描述】:
我正在尝试使用 powershell 编写脚本来获取文件夹/文件大小,如下所述
$StartFolder = "D:\"
$Output = "C:\Temp\test-d.csv"
Add-Content -Value "Folder Path|Size" -Path $Output
$colItems = (Get-ChildItem $startFolder -Recurse | Measure-Object -Property Length -Sum)
"$StartFolder -- " + "{0:N2}" -f ($colItems.Sum / 1MB) + " MB" # | Out-File $Output
$colItems = (Get-ChildItem $startFolder -Recurse | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object)
foreach ($i in $colItems) {
$subFolderItems = (Get-ChildItem $i.FullName -Recurse | Measure-Object -Property Length -Sum)
$i.FullName + "|" + "{0:N2}" -f ($subFolderItems.Sum / 1MB) + " MB" | Out-File $Output -Append
}
我收到如下所述的错误:
测量对象:在任何输入中都找不到属性“长度” 对象。 在行:12 字符:65 + $subFolderItems = (Get-ChildItem $i.FullName -Recurse | Measure-Object - ... + + CategoryInfo : InvalidArgument: (:) [Measure-Object], PSArgumentException + FullyQualifiedErrorId : GenericMeasurePropertyNotFound,Microsoft.PowerShell.Commands.MeasureObjectCommand 测量对象:在任何输入中都找不到属性“长度” 对象。 在行:12 字符:65 + $subFolderItems = (Get-ChildItem $i.FullName -Recurse | Measure-Object - ... + + CategoryInfo : InvalidArgument: (:) [Measure-Object], PSArgumentException + FullyQualifiedErrorId : GenericMeasurePropertyNotFound,Microsoft.PowerShell.Commands.MeasureObjectCommand另外,当我以 C: 驱动器为目标时,我在某些系统文件上收到“拒绝访问”:
Get-ChildItem:访问路径“C:\Windows\System32\LogFiles\WMI\RtBackup” 被拒绝。 在行:12 字符:28 + $subFolderItems = (Get-ChildItem $i.FullName -Recurse | Measure-Object - ... + + CategoryInfo : PermissionDenied: (C:\Windows\Syst...es\WMI\RtBackup:String) [Get-ChildItem], UnauthorizedAccessException + FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand【问题讨论】:
-
如果您不是管理员或没有权限,您将无法像这样修改系统目录。因此,您可以尝试以管理员身份运行或授予必要的权限。由于它没有访问权限,因此无法选择长度。
-
你到底为什么要用这样的管道连接 table viewl? PowerShell 内置了对 csv、json 的支持,还有一些用于 excel 的模块......
标签: powershell filesize