运行convertto-html时在PowerShell中获取属性值

时间:2018-12-10 19:35:57

标签: powershell

我仍然对Powershell还是陌生的,最近我开始了解get-member属性。但是,当我通过管道将命令转换为html时,该值消失了。

我有一个名为link.csv的数据,下面是文件的内容

    Target      Node  Address          Status
------      ----  -------          ------
server01 0:2:3 20230002AC0153AF Up    
server01 0:2:4 20240002AC0153AF Up    
server01 1:2:3 21230002AC0153AF Up    
server01 1:2:4 21240002AC0153AF Up 

我可以按照以下方法获取属性值。

PS C:\Report\script\Temp> $a= Import-Csv .\link.csv | select Target,Node,Address,Status 

PS C:\Report\script\Temp> $a.Node[1]
0:2:4

PS C:\Report\script\Temp> $a.Status[1]
Up

PS C:\Report\script\Temp> $a.Target[1]
server01

但是当我将其输出到Convertto-Html

PS C:\Report\script\Temp> $a= Import-Csv .\link.csv | select Target,Node,Address,Status | ConvertTo-Html -Fragment -PreContent "<font color=`"Black`"><H4>Remote Copy Group - $b</H4></font> "

PS C:\Report\script\Temp> $a.Target[1]
Cannot index into a null array.
At line:1 char:1
+ $a.Target[1]
+ ~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

在运行convertto-html命令时如何获取属性值。 希望您能帮我解决这个问题。

先谢谢您。

1 个答案:

答案 0 :(得分:0)

如果您想在管道中捕获中间结果,请使用带有变量名称-OutVariable / -ov common parameter以便将这些结果存储在该变量中:

$html = Import-Csv .\link.csv |
  Select-Object Target, Node, Address, Status -OutVariable a | 
    ConvertTo-Html -Fragment -PreContent "<font color=`"Black`"><H4>Remote Copy Group - $b</H4></font> "

$a.Target[1]

请注意管道整体如何返回 HTML (作为行的数组),而从CSV输入过滤的中间自定义对象则通过$a存储在变量-OutVariable中,供以后使用-请注意如何仅将变量 name 传递给-OutVariable,而不传递$标记,即仅传递a而不是{{1 }}。