none
Daten mit Hilfe von select-Object auslesen, formatieren und in if-Anweisung vergleichen RRS feed

  • Frage

  • Hallo zusammen,

     

    vorab ich bin noch nicht so der Powershell profi :)

    So nun zu meinem Problem, ich möchte ein Skript schreiben welches bestimmte Informationen ausliest und dann rausfiltert ob ein bestimmter wert vorhanden ist.

     

    Hier einmal das Skript:

     

    $puffer=(Get-DcsVirtualDisk -VirtualDisk snapshot_vDisk2_sds1 | select-object *IsServed*| Format-list )
    		$puffer
    		
    		if($puffer -eq "True")
    		{
    		"Ja True ist vorhanden"
    		}
    		else
    		{
    		"nein!!!!"
    		}
    Führe ich nur den Befehl 
    Get-DcsVirtualDisk -VirtualDisk snapshot_vDisk2_sds1

     

    aus so bekomme ich folgendes Ergebnis:

     

     

    VirtualDiskGroupId       :
    FirstHostId              : 8770F670-D7DA-4439-BFFF-F767C01E9B09
    SecondHostId             :
    BackupHostId             :
    StorageProfileId         : 100469DF-0BE1-40DA-874E-9F1DA5A259E3
    Alias                    : Snapshot_vDisk2_sds1
    Description              :
    Size                     : 100,00 GB
    Type                     : NonMirrored
    DiskStatus               : Online
    InquiryData              : DataCore Virtual Disk DCS
    ScsiDeviceId             : {96, 3, 13, 144...}
    RemovableMedia           : False
    WriteThrough             : False
    Offline                  : False
    DiskLayout               : DataCore.Executive.PhysicalDiskLayout
    PersistentReserveEnabled : True
    RecoveryPriority         : Low
    IsServed                 : True
    Id                       : 354a805cb6294cfaa22f03df51217419
    Caption                  : Snapshot_vDisk2_sds1
    ExtendedCaption          : Snapshot_vDisk2_sds1 from Server Group
    Internal                 : False

    Hier interessiert mich aber nur die Zeil "IsServed" - hier steht entwerder "True" oder "False" drin.


    In meinem Skript sortiere ich dann noch die Ausgabe und erhalte mit folgendem Befehl folgendes Ergebnis:

    Get-DcsVirtualDisk -VirtualDisk snapshot_vDisk2_sds1 | select-object *IsServed*| Format-list 
    

    Ergebnis:

    IsServed : True

    Nun möchte ich gerne in meiner If-Anweisung entscheiden ob da True oder False drin steht.... :/ nur leider funktioniert das nicht so wie es solll /

    Hat jemand eine Idee ?

    Vielen Dank schonmal !

     

    Dienstag, 13. Dezember 2011 09:34

Antworten

  • Moin,

    erste Regel in der PowerShell: ALLES ist ein Objekt -> auch die Ausgabe von format-list. Und wenn man mit Objekten arbeitet, wird Dein Script auch deutlich einfacher

    Falls Du jetzt nicht weißt, was ein Objekt ist, solltest Du Dich zuerst damit beschäftigen - sonst wird die Arbeit mit der PowerShell später kaum Spaß machen. ;)

    $puffer=(Get-DcsVirtualDisk -VirtualDisk snapshot_vDisk2_sds1 | select-object *IsServed*| Format-list )
    $puffer
    if($puffer -eq "True")

    Mach daraus:

    $puffer= Get-DcsVirtualDisk -VirtualDisk snapshot_vDisk2_sds1
    $puffer
    if($puffer.IsServed -eq $true)

    Den Rest weiter wieder bei Dir.

    Hinweis: Das ganze geht übrigens nur, wenn es GENAU einen Treffer gibt, es funktioniert nicht bei 0 oder mehr als 1 Treffer.


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    • Als Antwort vorgeschlagen Frank Roeder Donnerstag, 15. Dezember 2011 19:50
    • Als Antwort markiert Alex Pitulice Montag, 19. Dezember 2011 16:40
    Dienstag, 13. Dezember 2011 11:09

Alle Antworten

  • Moin,

    erste Regel in der PowerShell: ALLES ist ein Objekt -> auch die Ausgabe von format-list. Und wenn man mit Objekten arbeitet, wird Dein Script auch deutlich einfacher

    Falls Du jetzt nicht weißt, was ein Objekt ist, solltest Du Dich zuerst damit beschäftigen - sonst wird die Arbeit mit der PowerShell später kaum Spaß machen. ;)

    $puffer=(Get-DcsVirtualDisk -VirtualDisk snapshot_vDisk2_sds1 | select-object *IsServed*| Format-list )
    $puffer
    if($puffer -eq "True")

    Mach daraus:

    $puffer= Get-DcsVirtualDisk -VirtualDisk snapshot_vDisk2_sds1
    $puffer
    if($puffer.IsServed -eq $true)

    Den Rest weiter wieder bei Dir.

    Hinweis: Das ganze geht übrigens nur, wenn es GENAU einen Treffer gibt, es funktioniert nicht bei 0 oder mehr als 1 Treffer.


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    • Als Antwort vorgeschlagen Frank Roeder Donnerstag, 15. Dezember 2011 19:50
    • Als Antwort markiert Alex Pitulice Montag, 19. Dezember 2011 16:40
    Dienstag, 13. Dezember 2011 11:09
  • Hi,

     

    viele Dank funktioniert super :) 

    Ja ich werde mich jetzt sowieso intensiver mit Powershell beschäftigen müssen...Die Begrifflichkeiten sind mir noch nicht alle so geläufig, aber ich hoffe das kommt noch ;)

     

    Danke !

    Dienstag, 13. Dezember 2011 13:25