9

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台無しにします。

編集:上記のコードを変更して現在の状態を反映し、完全なエラーを含めました。
再度編集: 上記のコードには、デバッグ用の一時変数がいくつか含まれています。

4

1 に答える 1