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 回答