2017-06-16 1 views
2

Ich habe eine Frage über das Einsteigen in Objektwerte in Powershell.Hashtable mit Format-Liste zurück in die Powershell der Hashtabelle

Ich habe eine Funktion, die Objekt | zurückgibt Format-Liste. Jetzt ordne ich der Variablen den Rückgabewert zu und möchte daraus einen Wert erhalten. Bitte werfen Sie einen Blick auf folgendem Beispiel:

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

Funktion gibt: $ output | Format-List, die mir gibt:

Name : A 
Value : 123 

In diesem Fall habe ich Wert von $ output.A bekommen können, aber wenn sie in Funktion eingewickelt ist, weiß ich nicht, wie es retrive

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

    return $output | Format-List 
} 

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

Jeder kann Hilfe dabei? Ich habe keinen Zugriff auf testFunction, daher kann ich sie nicht ändern.

+0

Das Problem ist, dass Funktionsteil des externen Moduls ist: https://github.com/ChackDan/Service-Fabric/blob/master/Scripts/ServiceFabricRPHelpers/ ServiceFabricRPHelpers.psm1, die zurückgibt: return $ output | Format-Liste; und es ist mein Problem :) – danrok

+1

Nun, Sie können wahrscheinlich die Ausgabe iterieren und extrahieren/analysieren die Informationen. Aber ich denke, es ist unzuverlässig. Diese Funktion ist wirklich seltsam. Ich würde es einfach lokal modifizieren. – wOxxOm

+1

Zustimmen. Der Autor sollte * nicht * 'Format-List' verwenden, um die Ausgabe zu senden. Sie möchten die Objektdaten, nicht eine formatierte Darstellung davon. –

Antwort

0
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) 
    } 
} 

Auf Ihrem Beispiel nennen

ConvertFrom-FormatListHashtable $result 

Name       Value                             
----       -----                             
A        123 
Verwandte Themen