【问题标题】:CSV data from PowerShell Export-Csv contains select clause on first line来自 PowerShell Export-Csv 的 CSV 数据在第一行包含 select 子句
【发布时间】:2018-09-08 06:54:41
【问题描述】:

我正在通过一些 Where-ObjectSelect-Object 指令将数据从 Get-ChildItem 推送到 csv,如下所示。

问题在于 csv 的第一行包含 Select 子句本身(例如字面意思是 { “This part” + $_.AndThisBit }。不确定为什么我的部分代码会泄漏到数据中?

Get-ChildItem "E:\Some\Path" -Recurse -Include *.msg, *.eml | 
    Where-Object { $_.Name.StartsWith("Confidential") -eq $false } |
    Select-Object { "Fixed-prefix*" + $_.FullName } |
    Export-Csv -Path "C:\another\path\Results.csv" -NoTypeInformation

【问题讨论】:

  • 根据经验,避免过多的管道。如果有中间变量要检查,调试代码会容易得多。
  • @vonPryz,对于调试,这可能是正确的,但不是一般的经验法则,例如生产脚本。将流分配给变量会阻塞管道并可能影响性能。

标签: powershell get-childitem select-object


【解决方案1】:

Select-Object 不像 Where-Object 那样采用 ScriptBlocks。你可能想要的是:

Select-Object -Property @{Name="Prefix"; Expression={"Fixed-prefix*" + $_.FullName}}

使用表达式定义自定义属性。该表达式是一个 ScriptBlock 并被评估。

【讨论】:

    猜你喜欢
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 2016-04-30
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多