none
Ojekte einer Variablen auslesen RRS feed

  • Frage

  • Hallo zusammen,

    ich habe ein Problem in einem meiner Powershell-Scripte.

    Ich lese eine json-Seite über:

    $result = (Invoke-WebRequest "$URI" –method GET -ContentType 'application/json; charset=utf8' -Credential $credential)
    $Object = ConvertFrom-Json -InputObject $result.Content


    aus. Anschließend möchte ich verschiedene Werte auslesen, die ich zum Beispiel über

    $Object.value.HeapMemoryUsage.used

    abfragen kann. Jetzt soll aber nicht immer das selbe abgefragt werden, was abgefragt werden soll, wird vorher in einer .ini festgehalten und kann damit ständig variieren.

    Ich habe schon diverse Ideen ausprobiert, bekomme es aber nicht hin, dass

    $Object.value.HeapMemoryUsage.used

    ausgeführt wird, wenn ich es aus Teilen der .ini zusammensetze. Ich habe versucht $Object.... komplett in die .ini zu schreiben, mit dem Ergebnis, dass mir das Ganze einfach als Text ausgegeben wird. Dann habe ich versucht die Abfrage zusammen zubauen, sprich $Object fest in den Code zu übernehmen und nur .value.HeapMemoryUsage.used aus der ini zu übernehmen, aber hier habe ich dann nur den Inhalt von $Object angezeigt bekommen und den Rest als Text angehangen. Wie kann ich mit diese Abfrage aus den Variablen zusammensetzen?

    Gruß

    Marco

    Freitag, 12. August 2016 08:41

Antworten

  • Habe ich bei mir ein Problem, oder kann ich das generell nicht so zusammensetzen.

    Einen mehrteiligen Property-Bezeichner kannst Du so tatsächlich nicht zusammensetzen. Du kannst aber den ganzen Bezeichner ('$Object.value.HeapMemoryUsage.used') als String an Invoke-Expression übergeben, das sollte das gewünschte Ergebenis liefern.

    Evgenij Smirnov

    msg services ag, Berlin -> http://www.msg-services.de
    my personal blog (mostly German) -> http://it-pro-berlin.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    In theory, there is no difference between theory and practice. In practice, there is.

    Freitag, 12. August 2016 10:06

Alle Antworten

  • moin,

    ich hoffe, dass ich das richtig verstanden habe:

    $ini = 'ID','ProcessName'
    
    $object = Get-Process | select -First 3
    
    foreach ($werte in $ini){
        Write-Host "alle $werte" -ForegroundColor Green
        
        $object.$werte
    }

    Freitag, 12. August 2016 08:59
  • So hatte ich es auch probier, hier ein kurzer Ausschnitt

    $werte = "value.HeapMemoryUsage.used"
    $Object.$werte
    $Object.value.HeapMemoryUsage.used

    bei dem ersten Versuch mit $Object.$werte passiert nichts, hänge ich das .value.Heap... direkt an die Variable ist die Ausgabe 23694096

    Habe ich bei mir ein Problem, oder kann ich das generell nicht so zusammensetzen.

    Freitag, 12. August 2016 09:32
  • Habe ich bei mir ein Problem, oder kann ich das generell nicht so zusammensetzen.

    Einen mehrteiligen Property-Bezeichner kannst Du so tatsächlich nicht zusammensetzen. Du kannst aber den ganzen Bezeichner ('$Object.value.HeapMemoryUsage.used') als String an Invoke-Expression übergeben, das sollte das gewünschte Ergebenis liefern.

    Evgenij Smirnov

    msg services ag, Berlin -> http://www.msg-services.de
    my personal blog (mostly German) -> http://it-pro-berlin.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    In theory, there is no difference between theory and practice. In practice, there is.

    Freitag, 12. August 2016 10:06
  • Vielen Dank für den Tipp, so geht's.
    Montag, 15. August 2016 07:06