Powershell 更改数据表中的输出 object 名称
Powershell change output object name from datatable
我正在将数据 table 中的几个 object 输出到 .csv 文件,并想更改 object 名称。
这很好用:
$dataset.tables[0] | select-object System.ItemName, System.ItemPathDisplay | Export-Csv -Path D:\SEARCH_RESULT.csv -NoTypeInformation
但是我想将 System.ItemName 更改为 SKU 并尝试了以下操作:
$dataset.tables[0] | select-object @{N='SKU';E={$_.System.ItemName}}, System.ItemPathDisplay | Export-Csv -Path D:\SEARCH_RESULT.csv -NoTypeInformation
这给出了正确的列标题但空白行。所以尝试了这个给出行但他们都说 SYSTEM.ITEMNAME:
$dataset.tables[0] | select-object @{N='SKU';E={$dataset.tables[0].Columns['SYSTEM.ITEMNAME']}}, System.ItemPathDisplay | Export-Csv -Path D:\SEARCH_RESULT.csv -NoTypeInformation
显然我没有正确引用 object。非常感谢任何帮助。
将$_.System.ItemName
更改为$_.'System.ItemName'
您的 属性 名称是 System.ItemName
,如果 属性 名称本身包含 .
,则必须 引用 - 否则,PowerShell 将其解释为 nested property access
也就是说,$_.System.ItemName
首先在名为 System
的对象 $_
上查找 属性,然后查找 ItemName
属性第一个 属性 的值;访问 non-existent 属性时,PowerShell 默认为 $null
。
将此与使用 System.ItemName
作为 参数 传递给 Select-Object
cmdlet 的(位置隐含的)-Property
参数进行对比,其中参数是 always 解释为 single 属性 名称(无论是否引用)。
换句话说:Select-Object
不直接支持嵌套 属性访问,但你可以通过calculated property,就像你的方法一样。
我正在将数据 table 中的几个 object 输出到 .csv 文件,并想更改 object 名称。
这很好用:
$dataset.tables[0] | select-object System.ItemName, System.ItemPathDisplay | Export-Csv -Path D:\SEARCH_RESULT.csv -NoTypeInformation
但是我想将 System.ItemName 更改为 SKU 并尝试了以下操作:
$dataset.tables[0] | select-object @{N='SKU';E={$_.System.ItemName}}, System.ItemPathDisplay | Export-Csv -Path D:\SEARCH_RESULT.csv -NoTypeInformation
这给出了正确的列标题但空白行。所以尝试了这个给出行但他们都说 SYSTEM.ITEMNAME:
$dataset.tables[0] | select-object @{N='SKU';E={$dataset.tables[0].Columns['SYSTEM.ITEMNAME']}}, System.ItemPathDisplay | Export-Csv -Path D:\SEARCH_RESULT.csv -NoTypeInformation
显然我没有正确引用 object。非常感谢任何帮助。
将$_.System.ItemName
更改为$_.'System.ItemName'
您的 属性 名称是 System.ItemName
,如果 属性 名称本身包含 .
,则必须 引用 - 否则,PowerShell 将其解释为 nested property access
也就是说,$_.System.ItemName
首先在名为 System
的对象 $_
上查找 属性,然后查找 ItemName
属性第一个 属性 的值;访问 non-existent 属性时,PowerShell 默认为 $null
。
将此与使用 System.ItemName
作为 参数 传递给 Select-Object
cmdlet 的(位置隐含的)-Property
参数进行对比,其中参数是 always 解释为 single 属性 名称(无论是否引用)。
换句话说:Select-Object
不直接支持嵌套 属性访问,但你可以通过calculated property,就像你的方法一样。