Powershell:Export-CSV 和 OutFile 没有按照我的预期进行
Powershell: Export-CSV and OutFile not doing what I expect
为什么我在这里得到一个空白文件?当我在 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
公共参数-WhatIf
- 用于预览命令的动作 - 从不输出数据;相反,预览信息会直接打印到控制台,这意味着它既不能通过管道发送,也不能重定向到文件,也不能捕获。
顺便说一句:Remove-Item
without -WhatIf
也永远不会产生数据输出,所以通常没有必要尝试在后续管道段中处理其输出。
您最好的选择是 向您的 Where-Object
调用 添加一个 -OutVariable
(-ov
) 通用参数,这样您就可以导出在 单独的 命令中通过 Export-Csv
收集的 file-info 对象:
Get-ChildItem ... | Where-Object -OutVariable filesToRemove { ... } |
Remove-Item -WhatIf ...
$filesToRemove | Export-Csv D:\output.csv
上面仍然将预览信息打印到控制台,而且还收集了 Where-Object
选择的 [System.IO.FileInfo]
对象到变量 $filesToRemove
中,然后您可以将其导出为 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
公共参数-WhatIf
- 用于预览命令的动作 - 从不输出数据;相反,预览信息会直接打印到控制台,这意味着它既不能通过管道发送,也不能重定向到文件,也不能捕获。
顺便说一句:Remove-Item
without -WhatIf
也永远不会产生数据输出,所以通常没有必要尝试在后续管道段中处理其输出。
您最好的选择是 向您的 Where-Object
调用 添加一个 -OutVariable
(-ov
) 通用参数,这样您就可以导出在 单独的 命令中通过 Export-Csv
收集的 file-info 对象:
Get-ChildItem ... | Where-Object -OutVariable filesToRemove { ... } |
Remove-Item -WhatIf ...
$filesToRemove | Export-Csv D:\output.csv
上面仍然将预览信息打印到控制台,而且还收集了 Where-Object
选择的 [System.IO.FileInfo]
对象到变量 $filesToRemove
中,然后您可以将其导出为 CSV 格式。