LASTEXITCODE unter PowerShell nicht richtig verstanden
Um den Bluetooth-Status eines meiner Geräte zu ermitteln, nutze ich BluetoothView v1.66 von NirSoft. http://www.nirsoft.net/utils/bluetooth_viewer.html
Das Tool bietet dazu folgenden Parameter an:
In einer Batch-Datei habe ich folgende Abfrage definiert:
Das funktioniert auch gut.
Nun wollte ich das aber mittels PowerShell machen. Nur so zur Übung, weil ich mich ein wenige in PowerShell einarbeiten wollte.
Meine Idee war den "Return-Status" in meinem PowerShell-Script über $LASTEXITCODE auszuwerten:
Leider ist $LASTEXITCODE immer leer, egal welchen Status mein Gerät hat.
Wenn ich anstelle von $LASTEXITCODE nur $? nutze, bekomme ich immer nur "TRUE" als Info, dass das Programm ausgeführt wurde.
Hat jemand eine Idee, wie ich den Return-Code von BluetoothView.exe in PowerShell abfragen und visualisieren kann? Im Netz habe ich leider keine Lösung gefunden und die gekauften PowerShell-Bücher sagen dazu auch nichts.
Das Tool bietet dazu folgenden Parameter an:
/try_to_connect <MAC Address>
Try to connect to a specific Bluetooth device. If the connect process was
successful, the .exe returns 0. Otherwise, it returns error code.
Example:
BluetoothView.exe /try_to_connect 00:23:05:a1:22:f1
In einer Batch-Datei habe ich folgende Abfrage definiert:
BluetoothView.exe /try_to_connect 00:23:05:a1:22:f1
echo %errorlevel%
Das funktioniert auch gut.
Nun wollte ich das aber mittels PowerShell machen. Nur so zur Übung, weil ich mich ein wenige in PowerShell einarbeiten wollte.
Meine Idee war den "Return-Status" in meinem PowerShell-Script über $LASTEXITCODE auszuwerten:
$arguments = "/try_to_connect","00:23:05:a1:22:f1"
& "D:\NextCloud\Test\BluetoothView.exe" $arguments
$LASTEXITCODE
Leider ist $LASTEXITCODE immer leer, egal welchen Status mein Gerät hat.
Wenn ich anstelle von $LASTEXITCODE nur $? nutze, bekomme ich immer nur "TRUE" als Info, dass das Programm ausgeführt wurde.
Hat jemand eine Idee, wie ich den Return-Code von BluetoothView.exe in PowerShell abfragen und visualisieren kann? Im Netz habe ich leider keine Lösung gefunden und die gekauften PowerShell-Bücher sagen dazu auch nichts.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 536261
Url: https://administrator.de/contentid/536261
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
5 Kommentare
Neuester Kommentar
Hey,
wenn du ein echo $argmuents machen würdest, dann würdest du feststellen, dass dein Output folgender ist:
das \n wird dein Tool wohl nicht interpretieren ;)
PS: Zur Ausgabe ist natürlich ein echo nicht notwendig, $arguments reicht. Wollte nur das du weißt was ich meine
wenn du ein echo $argmuents machen würdest, dann würdest du feststellen, dass dein Output folgender ist:
try_to_connect
00:23:05:a1:22:f1
das \n wird dein Tool wohl nicht interpretieren ;)
PS: Zur Ausgabe ist natürlich ein echo nicht notwendig, $arguments reicht. Wollte nur das du weißt was ich meine
Hat jemand eine Idee, wie ich den Return-Code von BluetoothView.exe in PowerShell abfragen und visualisieren kann?
Powershell basiert auf dem .NET Framework, lerne es zu nutzen $proc = start-process "D:\NextCloud\Test\BluetoothView.exe" -Argumentlist "/try_to_connect 00:23:05:a1:22:f1" -wait -passthru
$proc.ExitCode
Generell kann man sagen das $LASTEXITCODE nicht "zuverlässig" dafür genutzt werden alle Rückgabewerte einer Anwendung auszuwerten, da da es nur bei legacy commands wie z.B. die integrierten DOS-Commands gesetzt wird die explizit den exit <num> Befehl nutzen, da es aber unterschiedliche Methoden gibt einen Rückgabewert aus einer Anwendungheraus zu setzen sollte man der automatischen Variable $LASTEXITCODE niemals blind vertrauen, nur wenn man den Support mit seiner Anwendung vorher überprüft hat.
Ich arbeite jetzt schon über ein Jahrzehnt mit der PS und habe die Variable nie wirklich genutzt, also am besten schnell wieder vergessen, das ist ein Relikt vergangener Tage .
So denn, schönes Wochenende.
Ich arbeite jetzt schon über ein Jahrzehnt mit der PS und habe die Variable nie wirklich genutzt, also am besten schnell wieder vergessen, das ist ein Relikt vergangener Tage .
So denn, schönes Wochenende.