将powershell对象属性的名称值获取到字符串中

时间:2014-11-21 19:32:17

标签: powershell powershell-v2.0

我导入了一个csv文件

$infile = import-csv .\myfile.csv

现在我可以通过

显示列(现在是对象属性)
$infile | gm -type NoteProperty

Name      MemberType

-------   ----------

Column1   NoteProperty

Column2   NoteProperty

etc...

我想要做的是将Name(Column1..)的值变为变量。

4 个答案:

答案 0 :(得分:5)

您可以使用select

$infile | gm -type NoteProperty | select -ExpandProperty Name

如,

$Names = @( $infile | gm -type NoteProperty | select -ExpandProperty Name )

答案 1 :(得分:1)

另一种方法是通过PSObject

$infile[0].PSObject.Properties |
  ? { $_.MemberType -eq 'NoteProperty' } |
  select -Expand Name

使用$infile[0]选择集合中的第一个对象,否则.PSObject.Properties将返回集合的属性而不是集合元素的属性。

答案 2 :(得分:0)

这应打印Column1

$infile = import-csv .\myfile.csv
$gm = $infile | gm -type NoteProperty
$name = $gm[0].Name
$name

答案 3 :(得分:0)

使用powershell导入cdv文件时,我通常会指定一个多于一个值的分隔符。希望这有助于所有人。

示例csv文件

 Key     ValueA     ValueB
 ref1    valueA1    valueB1
 ref2    valueA2    valueB2

使用记事本打开csv文件时

 Key;ValueA;ValueB
 ref1;valueA1;valueB1
 ref2;valueA2;valueB2

使用powershell将该csv文件导入变量

 $Hash = Import-Csv -path d:\test.csv -Delimiter ';'

使用powershell查询csv文件

 $Hash = Import-Csv -path d:\test.csv -Delimiter ';' |? {$_.ValueA -eq 'x' -and $_.ValueB -eq 'y'} | Select -exp Key