PowerShell は初めてです。以下に示すように、すべての *.bak ファイルを一覧表示し、日付またはサイズで並べ替える簡単なプログラムを書きたいと思いました。
$Drives = Get-WMIObject -class win32_logicaldisk -filter "DriveType = 3" ;
foreach ($d in $Drives){
If (($d.deviceId -ne "C:") -and ($d.VolumeName -ne "PAGEFILE")) {
$backups += Get-ChildItem -Path $d.deviceID -Recurse -filter *.bak
}
これは、たとえば D: ドライブに *.bak ファイルが 1 つしかない場合を除いて、通常は正常に機能します。その場合、エラーが発生します。
Method invocation failed because [System.IO.FileInfo] doesn't contain a method named 'op_Addition'.
At F:\work\PowerShell\DiskSpace\generate-disk-report-v2.ps1:39 char:13
+ $backups += <<<< Get-ChildItem -Path $d.deviceID -Recurse -filter *.bak
+ CategoryInfo : InvalidOperation: (op_Addition:String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound
そのドライブに追加の jump.bak を追加すると、正常に動作します。