PowerShell 4.0 を使用して、複数のディレクトリのサイズを取得しようとしていますが、ウィンドウが教えてくれるものとコードが教えてくれるものとの間で非常に一貫性のない結果が得られます。
問題のコードは次のとおりです。
$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 : コマンドレットの動的パラメーターを取得できません。指定されたワイルドカード文字パターンは無効です: 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
台無しにします。
編集:上記のコードを変更して現在の状態を反映し、完全なエラーを含めました。
再度編集: 上記のコードには、デバッグ用の一時変数がいくつか含まれています。