Bios-Option mit StringRegExp finden

  • Hallo Gemeinde,

    ich versuche die nachfolgende Bios-Option mittels StringRegExp zu finden:

    # 34|Active: True - CurrentSetting: MinimumPasswordLength,4

    Es ist das Ergebnis aus _DebugArrayDisplay($aBiosArray).

    Das sich die Zahl hinter MinimumPasswordLength aber durchaus eine andere sein kann, wollte ich mit "$pattern" und StringRegExp nach dem Eintrag suchen.
    Leider wird aber der String nicht gefunden.
    Suche ich mit <$sindex2 = _ArraySearch($aBiosArray, "MinimumPasswordLength,4", 0, 0, 0, 1) ; Zahl 1 = Teilsuche > wird der Index 34 ausgegeben.

    Hat jemand eine Idee warum StringRegExp den String nicht findet?

  • hipfzwirgel 16. August 2024 um 13:26

    Hat den Titel des Themas von „Bios-Option mit StrinRegExp finden“ zu „Bios-Option mit StringRegExp finden“ geändert.
  • Testen kann ich es nicht - da es ja anscheinend nur auf Lenovo-Rechnern läuft.
    Aber wenn ich das richtig verstehe, möchtest du nur die Einträge aus Lenovo_BiosSetting haben, bei denen in CurrentSetting der Begriff MinimumPasswordLength vorkommt?

    Spontan hätte ich da gesagt, dass man das doch am besten gleich im Query-String mit unterbringt:

    SELECT * FROM Lenovo_BiosSetting WHERE CurrentSetting LIKE '%MinimumPasswordLength%"

  • Hallo Aspirinjunkie,

    zunächst vielen lieben Dank für deinen Beitrag. Aber so ganz stimmt deine Auslegung nicht.

    Erklärung:

    Ist die Bios-Option nicht aktiv, dann ist der Wert: MinimumPasswordLength, Disable.
    Wenn er aber aktiviert ist, dann ist der Wert: MinimumPasswordLength,n (Wobei n eine voreingestellt Zahl größer als 4 sein kann).

    Um also herauszufinden ob die Option gesetzt ist, muss ich eben nach dem Wert MinimumPasswordLength,n suchen!
    Des Pudels Kern ist, dass wenn ich nach MinimumPasswordLength,4 per Arraysearch suche(sofern 4 eingestellt ist!), wird der Index gefunden.
    Mit dem Pattern von StrgRegExp aber nicht.

    Kann es sein, dass ich damit a) im Array gar nicht suchen kann, oder b) ob nur Strings gefunden werden und der Eintrag im Index gar kein String ist?

  • Ja dann brauchst du doch auch bloß die Abfrage an deinen konkreten Stringaufbau anzupassen.
    Soetwas in der Art halt:

    AutoIt
    For $oItem In ObjGet("winmgmts:").ExecQuery('SELECT * FROM Lenovo_BiosSetting WHERE CurrentSetting LIKE "%MinimumPasswordLength,[0-9]%"', "WQL", 48)
    	MsgBox(0, "", $oItem.Name)
    Next
  • Hallo Aspirinjunkie,

    werde ich gleich testen. By the way: mein Pattern funktioniert doch! Ich hatte nur vergessen, die Schleife die durch das Array geht, an der Fundstelle zu beenden.
    So ist sie komplett durch und hat den Status des letzten Index ausgegeben. # vordenKopfhau # man wie doof....

    Damit ist der Thread erledigt :!: Achja: vielen herzlichen Dank für deine Unterstützung :klatschen: