Benutzer mit den meisten Antworten
Daten mit Hilfe von select-Object auslesen, formatieren und in if-Anweisung vergleichen

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 BefehlGet-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 !
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
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