Powershell import-csv $变量正确为空
Powershell import-csv $variable properly is null
我在使用 Powershell 2.0 版时遇到了一个奇怪的问题。
以下内容适用于较新版本,但在此版本上无法正常工作。感谢任何帮助。
$DB = Import-Csv -Path "$($path)\DBExtrat.csv"
很好。
Headers 在 DBExtrat.csv ('hostname','hostip','name','type'
)
如果 i 运行
所有 4 header 都被重组并显示
$DB
但如果我尝试
$DB.name
或 $DB.hostname
它 returns 注意。我需要能够这样调用它,因为我的整个逻辑都与那些特定的变量名称相关联。
我已经尝试添加 -header
选项:
$DB = Import-Csv -Path "$($path)\DBExtrat.csv" -Header 'hostname','hostip','name','type'
但它不起作用,还会使用 header 数据创建不必要的额外行。
使用 $DB.name
等表达式,您试图获取集合 所有元素 的 name
属性 值 $DB
,通过对 集合作为一个整体执行 属性 访问 。
此功能称为 member-access enumeration,仅在 PowerShell v3+.
中可用
PowerShell v2 等价物 需要使用 Select-Object
or ForEach-Object
:
# Note the use of -ExpandProperty to ensure that only the property *value*
# is returned (without it, you get a *custom object* with a 'name' property).
$DB | Select-Object -ExpandProperty name
# Slower alternative, but can provide more flexibility
$DB | ForEach-Object { $_.name }
我建议使用@mklement0 的回答;简短。或者,针对您在评论中提出的问题,您可以尝试使用自定义对象并查看以下是否有效。
$import = Import-Csv -Path "$($path)\DBExtrat.csv"
$Object = New-Object psobject -Property @{
'hostname' = $import | Select-Object -ExpandProperty hostname
'hostip' = $import | Select-Object -ExpandProperty hostip
'name' = $import | Select-Object -ExpandProperty name
'type' = $import | Select-Object -ExpandProperty type
}
"$Object.hostname - $Object.hostip"
我在使用 Powershell 2.0 版时遇到了一个奇怪的问题。
以下内容适用于较新版本,但在此版本上无法正常工作。感谢任何帮助。
$DB = Import-Csv -Path "$($path)\DBExtrat.csv"
很好。
Headers 在 DBExtrat.csv ('hostname','hostip','name','type'
)
如果 i 运行
$DB
但如果我尝试
$DB.name
或 $DB.hostname
它 returns 注意。我需要能够这样调用它,因为我的整个逻辑都与那些特定的变量名称相关联。
我已经尝试添加 -header
选项:
$DB = Import-Csv -Path "$($path)\DBExtrat.csv" -Header 'hostname','hostip','name','type'
但它不起作用,还会使用 header 数据创建不必要的额外行。
使用 $DB.name
等表达式,您试图获取集合 所有元素 的 name
属性 值 $DB
,通过对 集合作为一个整体执行 属性 访问 。
此功能称为 member-access enumeration,仅在 PowerShell v3+.
中可用PowerShell v2 等价物 需要使用 Select-Object
or ForEach-Object
:
# Note the use of -ExpandProperty to ensure that only the property *value*
# is returned (without it, you get a *custom object* with a 'name' property).
$DB | Select-Object -ExpandProperty name
# Slower alternative, but can provide more flexibility
$DB | ForEach-Object { $_.name }
我建议使用@mklement0 的回答;简短。或者,针对您在评论中提出的问题,您可以尝试使用自定义对象并查看以下是否有效。
$import = Import-Csv -Path "$($path)\DBExtrat.csv"
$Object = New-Object psobject -Property @{
'hostname' = $import | Select-Object -ExpandProperty hostname
'hostip' = $import | Select-Object -ExpandProperty hostip
'name' = $import | Select-Object -ExpandProperty name
'type' = $import | Select-Object -ExpandProperty type
}
"$Object.hostname - $Object.hostip"