VoodooMax
Lieutenant
- Registriert
- Feb. 2010
- Beiträge
- 686
Servus an alle Powershell-Gurus
Ich scheitere gerade daran, in einem Verzeichnis eine Datei zu finden in deren Namen eine bestimmte Zeichenkette ist, die ich vorher in eine Variable gelesen habe. Genauer lese ich die Firmware/Softwareversion eines TPM-Moduls aus.
Anschließend suche ich in einem festgelegten Verzeichnis, ob eine Datei vorhanden ist, die den Inhalt von $TPMVER im Namen trägt:
Jetzt kommt das was mich fuchsig macht:
Die Variable $TPMVER erhält z.B. den Wert 7.63.3353.0
Im Script bleibt $Dateiname aber -eq $NULL.
Lösche ich $TPMVER und weise den Wert direkt zu
erhalte ich wie gewünscht den Dateinamen... Was mache ich hier falsch? Testweise habe ich bereits $TPMVER als String definiert, Anführungszeichen verwendet, den Wert in eine neue Variable überführt (alles erfolglos oder mit anderen dadurch erzeugten Fehlern), mit $Variablennamen.GetType().FullName festgestellt, dass $TPMVER immer ein System String ist und ich mit meinem Scripting-KungFu am Ende bin...
Siehe Screenshot:
Hier sieht man dass der Wert 7.85.4555.0 ausgelesen bzw. selektiert wird und der Typ der Variable ein System.String ist.
Der gci-Befehl macht aber keine Ausgabe, also wird die Bedingen $_:Name -match $check nicht erfüllt.
Nach Löschen der Variable und Neuzuweisung des oben ausgelesenen Wertes ist die Variable immer noch ein System.String und die Bedingung wird offensichtlich erfüllt, da die Ausgabe der gefundenen Dateien wie erwartet erfolgt...
Ich scheitere gerade daran, in einem Verzeichnis eine Datei zu finden in deren Namen eine bestimmte Zeichenkette ist, die ich vorher in eine Variable gelesen habe. Genauer lese ich die Firmware/Softwareversion eines TPM-Moduls aus.
PowerShell:
# ManufacturerVersion auslesen
$TPMVER = get-tpm | Select-Object ManufacturerVersion
# überflüssige Teile entfernen
$TPMVER = $TPMVER.ManufacturerVersion
Anschließend suche ich in einem festgelegten Verzeichnis, ob eine Datei vorhanden ist, die den Inhalt von $TPMVER im Namen trägt:
PowerShell:
$Dateiname = get-ChildItem -filter *.bin | Where-Object { $_.Name -match $TPMVER }
Jetzt kommt das was mich fuchsig macht:
Die Variable $TPMVER erhält z.B. den Wert 7.63.3353.0
Im Script bleibt $Dateiname aber -eq $NULL.
Lösche ich $TPMVER und weise den Wert direkt zu
PowerShell:
clear-variable TPMVER
$TPMVER = "7.63.3353.0"
Siehe Screenshot:
Hier sieht man dass der Wert 7.85.4555.0 ausgelesen bzw. selektiert wird und der Typ der Variable ein System.String ist.
Der gci-Befehl macht aber keine Ausgabe, also wird die Bedingen $_:Name -match $check nicht erfüllt.
Nach Löschen der Variable und Neuzuweisung des oben ausgelesenen Wertes ist die Variable immer noch ein System.String und die Bedingung wird offensichtlich erfüllt, da die Ausgabe der gefundenen Dateien wie erwartet erfolgt...