netzweise2

Mit Powershell prüfen, ob eine Objekteigenschaft vorhanden ist

Kürzlich habe ich mein BCDEdit-Modul wieder angefasst, um einige Funktionen zu überarbeiten. Das Modul erstellt dabei dynamisch Objekte aus dem BCD-Store, indem es per regulärem Ausdruck die Ausgaben von bcdedit.exe einliest, auftrennt und als Objekt zurückgibt.

Dummerweise sind aber nicht alle BCD-Einträge gleich. Einige Eigenschaften werden von BCDedit nur angezeigt, wenn Sie auch tatsächlich gesetzt sind. Um in einer If-Abfrage keine Fehlermeldung zu bekommen, wenn die Eigenschaft gar nicht existiert - die Fehlermeldung kann auch nicht unterdrückt werden, da es sich um einen terminierenden Fehler handlet - muss vorher geprüft werden, ob die Eigenschaft vorhanden ist. Das geht tatsächlich sehr einfach, ist aber gut versteckt. Denn an jedem Objekt hängt ein verstecktes Memberset namens psobject, das nur angezeigt wird, wenn man get-Member mit dem Parameter -force aufruft.

get-childitem C:\Windows | get-member -force

 Psobject ist ein Memberset

 PSObject beinhaltet Metainformationen über das Object, unter anderem eine Auflistung aller Eigenschaften.

$Folder = Get-Childitem C:\Windows | Get-Member -force
$Folder.psobject.Properties

Die Eigenschaft Name jeder Property entspricht dem Eigenschafsnamen. Um zu prüfen, ob eine Eigenschaft in der Liste enthalten ist, können Sie jetzt einfach den -contains-Operator verwenden:

If ( $folder.PSObject.Properties.Name -contains "Attributes" )
{
  "Die Eigenschaft Attributes existiert"
}

×
Stay Informed

When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.

Bitlocker-Verschlüsselung schlägt mit der Meldung ...
Den Datenträgertyp (SSD,HDD) per Powershell und WM...

Related Posts

 

Comments

No comments made yet. Be the first to submit a comment
Already Registered? Login Here
Mittwoch, 25. Juni 2025