4

ディレクトリを介して再帰し、ファイルのみを含めるようにしようとしてい.pdfます。次に、最近変更された3つのファイル名を返し、.pdfそれぞれの(完全な)ファイル名をそれぞれの変数に貼り付けます。

これがこれまでの私のコードです-

$Directory="C:\PDFs"
Get-ChildItem -path $Directory -recurse -include *.pdf | sort-object -Property LastWriteTime -Descending | select-object -First 3 | ForEach-Object 
    {
        Write-Host -FilePath $_.fullname
    }

ただし、スクリプトを実行すると、スクリプトのForEach部分のパラメーターを指定するように求められます。これにより、コマンドが正常にパイプ処理されていないか、コマンドがコマンドを使用していないと結論付けることができます。ちゃんと。

4

2 に答える 2

6

enter後を削除しforeach-objectます:

$Directory="C:\PDFs"
Get-ChildItem -path $Directory -recurse -include *.pdf | sort-object -Property LastWriteTime -Descending | select-object -First 3 | ForEach-Object {
        Write-Host -FilePath $_.fullname   }

コードにタイプミスがあります:

**    Get-ChildItem =path  **
于 2013-01-24T14:40:32.293 に答える
4

ForEach-Objectのスクリプトブロックが新しい行にあることが原因である可能性があります。PowerShellでは、バックティック文字( `)を使用して、コマンドが次の行に進むようにPowerShellに指示する必要があります。これを試して:

$Directory="C:\PDFs"
    Get-ChildItem -path $Directory -recurse -include *.pdf | sort-object -Property LastWriteTime -Descending | select-object -First 3 | ForEach-Object `
    {
        Write-Host -FilePath $_.fullname
    }
于 2013-01-24T14:40:35.260 に答える