Powershell:Export-CSV和OutFile没有达到我的预期

Dan*_*ams 0 powershell output export-csv

为什么我在这里得到一个空白文件?当我在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 
Run Code Online (Sandbox Code Playgroud)

mkl*_*nt0 5

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

抛开:Remove-Item 没有 -WhatIf也从不产生数据输出,因此尝试在后续管道段中处理其输出通常没有意义.

最好的办法是到一个加-OutVariable(-ov)通用参数来你的Where-Object电话,让您通过导出收集文件信息的对象Export-Csv不同的命令:

Get-ChildItem ... | Where-Object -OutVariable filesToRemove { ... } | 
  Remove-Item -WhatIf ...
$filesToRemove | Export-Csv D:\output.csv
Run Code Online (Sandbox Code Playgroud)

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