使用PowerShell 4.0,我尝试获取多个目录的大小,但是我得到的结果与Windows告诉我的结果非常不一致。
相关代码如下:
$temp4 = ($folderInfo.rootFolder).fullname
$folderInfo.directories += Get-ChildItem -LiteralPath $temp4 -Recurse -Force -Directory
$folderInfo.directories += $folderInfo.rootFolder
foreach ($dir in $folderInfo.directories)
{
$temp3 = $dir.fullname
$temp2 = Get-ChildItem -LiteralPath $temp3 -Force
$temp = (Get-ChildItem -LiteralPath $dir.fullname -Force -File | Measure-Object -Property length -Sum -ErrorAction SilentlyContinue).Sum
$folderInfo.totalSize += $temp
}
return $folderInfo
如果
$folderInfo.rootFolder = D:\sample
,那么我可以得到我想要的结果;但是如果$folderInfo.rootFolder = D:\[sample
,那么我会得到以下错误:如果Get-ChildItem: 无法检索cmdlet的动态参数。指定的通配符字符模式无效:sample [sample
At C:\powershell scripts\test.ps1:55 char:12
+ $temp = (Get-ChildItem $dir.fullname -Force -File | Measure-Object -Property l ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Get-ChildItem],ParameterBindingException
+ FullyQualifiedErrorId : GetDynamicParametersException,Microsoft.PowerShell.Commands.GetChildItemCommand
D:\sample
包含一个名为"[sample"
的子目录,那么同样会出现以上问题。除此之外的任何其他目录都能得到正确的结果。无论是$dir.pspath
还是$dir.fullname
都会导致问题。编辑:更改上述代码以反映其当前状态,并包括完整的错误信息。
再次编辑:上述代码现已添加了一些调试临时变量。