带格式列表的哈希表转换回哈希表powershell

问题描述:

我有一个关于进入Powershell中的对象值的问题。带格式列表的哈希表转换回哈希表powershell

我有一个函数返回对象|格式列表。现在我将返回值赋给变量,并想从中获取值。请看下面的例子:

$output = @{}; 
$output.A= "123"; 

函数返回:$ output |格式列表,给了我:

Name : A 
Value : 123 

在这种情况下,我可以用$ output.A获得价值,但是当它包装成功能我不知道如何以检索它

function testFunction() { 
    $output = @{}; 
    $output.A= "123"; 

    return $output | Format-List 
} 

$result = testFunction 
$result.A #gives empty value 

任何人都可以帮助这个?我无法访问testFunction,所以我无法修改它。

+0

的问题是功能的外部模块的一部分:https://github.com/ChackDan/Service-Fabric/blob/master/Scripts/ServiceFabricRPHelpers/ ServiceFabricRPHelpers.psm1返回:return $ output |格式清单;这是我的问题:) – danrok

+1

那么,你可以迭代输出并提取/解析信息。但我认为这是不可靠的。这个功能真的很奇怪。我只是简单地在本地修改它。 – wOxxOm

+1

同意。作者应该*不*使用'Format-List'发送输出。你想要的对象数据,而不是它的格式化表示。 –

function ConvertFrom-FormatListHashtable { 
    param ($InputObject) 
    PROCESS { 
     $tmp = ($InputObject | out-string).Trim() | ConvertFrom-String 
     $tmpCount = ($tmp | gm -MemberType NoteProperty).count 
     $i = 1 
     do { 
      $output = @{} 
      $output.Add($tmp.$("p$($i+2)"),$tmp.$("p$($i+5)")) 
      $output 
      $i=$i+6 
     } 
     while ($i -lt $tmpCount) 
    } 
} 

在你的榜样叫

ConvertFrom-FormatListHashtable $result 

Name       Value                             
----       -----                             
A        123