0

为什么我在这里得到一个空白文件?当我在 export-csv 之前运行它时,我会在控制台中显示大量记录。

输出

所以这是我正在使用的代码

$path = "C:\test"

Get-ChildItem -Path $path -Include *.edi, *.x12, *.filename, *.dat, *.log, *.mdn, *.req -Recurse -Force |
Where-Object {!$_.PSIsContainer -and ((get-date)-$_.LastWriteTime).days -gt 30 } |
Remove-Item -force -whatif | export-csv D:\output.csv #also I try out-file D:\output.txt 
4

1 回答 1

5

通用参数-WhatIf- 用于预览命令的动作 - 从不输出数据;相反,预览信息直接打印到控制台,这意味着它既不能通过管道发送,也不能重定向到文件,也不能捕获

顺便说一句:Remove-Item without -WhatIf也永远不会产生数据输出,因此尝试在后续管道段中处理其输出通常没有意义。

你最好的办法是在你的call中添加一个-OutVariable( -ov) 通用参数Where-Object,它允许你通过Export-Csv一个单独的命令导出收集的文件信息对象:

Get-ChildItem ... | Where-Object -OutVariable filesToRemove { ... } | 
  Remove-Item -WhatIf ...
$filesToRemove | Export-Csv D:\output.csv

上面仍然将预览信息打印到控制台,但也收集了变量中[System.IO.FileInfo]选择的对象,然后您可以将其导出为 CSV 格式。Where-Object$filesToRemove

于 2018-04-02T16:48:09.083 回答