Ein in eine exe-Datei umgewandeltes PowerShell Skript scheitert an dem simplen " $Stick = Get-PhysicalDisk | Where-Object {$_.BusType -eq "USB"} | Select-Object -ExpandProperty DeviceID". Komischerweise arbeitet anschließend Diskpart problemlos. Nur ohne die Variable $Stick funktionierts nicht. Fehlfunktion Rechner abhängig. Programm fordert wegen Diskpart Administratorenrechte. Logischerweise ohne Fehlermeldung. Bitte um Ideen! Danke im Voraus!
Bitte PowerShell Profis um Hilfe!
Registrierte und angemeldete Benutzer sehen den BMW-Treff ohne Werbung
Hier registrieren oder anmelden!
-
-
Fehlfunktion Rechner abhängig. Programm fordert wegen Diskpart Administratorenrechte.
Puh, klingt nach einem Rechteproblem der UAC. Mal da dran rumgespielt?
-
-
Ich kann das Problem nur bedingt nachvollziehen
Läuft es in der Powershell, wenn es nicht als .exe umgewandelt ist?
Ist die in Powershell erstellte Variable $Stick in Diskpart gültig? Ist Diskpart nicht eine eigene Session?
-
-
-
Ich kann das Problem nur bedingt nachvollziehen
Läuft es in der Powershell, wenn es nicht als .exe umgewandelt ist?
Ist die in Powershell erstellte Variable $Stick in Diskpart gültig? Ist Diskpart nicht eine eigene Session?
Auf allen mir zur Verfügung stehenden Rechnern läuft es problemlos. Ob es als PowerShell Script überall läuft weiß ich nicht. Kein nicht funktionierender Rechner ist näher als 50km.
Damit man die Variable $Stick in Diskpart verwenden kann, muß man ein bißchen tricksen. D.h.: das Programm schreibt eine txt Datei mit den Befehlen für Diskpart auf dem ausgeführten Rechner. Anschließend startet mein Programm diskpart /s [Pfad Befehlsdatei]
-
Simple Frage:
Powershell Skript-Ausführung auf dem nicht funktionierendem Rechner nicht erlaubt? -
-
das Programm schreibt eine txt Datei mit den Befehlen für Diskpart auf dem ausgeführten Rechner.
Liegt es am Speicherort?
-
Simple Frage:
Powershell Skript-Ausführung auf dem nicht funktionierendem Rechner nicht erlaubt?Erlaubt!
-
-
Liegt es am Speicherort?
Programm befindet sich auf dem Stick und startet normal. Diskpart läuft problemlos.
-
Die Zeile "$Stick = Get-PhysicalDisk | Where-Object {$_.BusType -eq "USB"} | Select-Object -ExpandProperty DeviceID" liefert, selbst bei Ausführung ohne Stick, keine Fehlermeldung. Die Variable bleibt nur leer.
-
-
Was liefert denn "Select-Object -ExpandProperty DeviceID" zurück?
-
Was liefert denn "Select-Object -ExpandProperty DeviceID" zurück?
So wie's aussieht nichts. Ich habe die Ergebnisvariable von diskpart als Textdatei auf den Stick schreiben lassen. Select disk scheitert, weil $Stick nichts liefert.
-
-
Auf dem Stick befindet sich nochmal ein Skript als exe-Datei. Diese läuft auf einem kritischen Rechner problemlos. Zwar ohne den Befehl Get-PhysicalDisk dafür mit Get-Volume und noch ganz anderen Abfragen.
Der einzige Unterschied: Dieses Programm wird als exe-Datei automatisch auf den Stick kopiert, während beim anderen die Umwandlung "auf" dem Stick stattfindet. Stick wird automatisch fat32 formatiert.
-
So wie's aussieht nichts.
Wenn die Select-Object Abfrage nichts liefert kann ja nichts bei rumkommen. Auch keine Fehlermeldung, weil die Operation ja gültig ist - nur eben nichts liefert.
edit: "Select-Object -ExpandProperty DeviceID" müsste eigentlich eine Liste der Device-IDs liefern.
-
-
Wenn die Select-Object Abfrage nichts liefert kann ja nichts bei rumkommen. Auch keine Fehlermeldung, weil die Operation ja gültig ist - nur eben nichts liefert.
Genau. Mir wäre eine Fehlermeldung lieber
-
Bitte beachte auch mein obiges edit.
Du kannst eine Fehlerabfrage mit Ausgabe einbauen, in dem Du $stick auf "" oder $NULL gegenprüfst und dann ggf. die weitere Ausführung des Scripts verhinderst.
-
-
edit: "Select-Object -ExpandProperty DeviceID" müsste eigentlich eine Liste der Device-IDs liefern.
Ja, ohne Where-Object {$_.BusType -eq "USB"}.
-
Bitte beachte auch mein obiges edit.
Du kannst eine Fehlerabfrage mit Ausgabe einbauen, in dem Du $stick auf "" oder $NULL gegenprüfst und dann ggf. die weitere Ausführung des Scripts verhinderst.
Verstehe ich nicht? Meinst Du $Stick -eq $null?
-
-
Richtig oder $Stick -eq ""
-
Richtig oder $Stick -eq ""
Ich bräuchte nur die Variable in eine Textdatei schreiben lassen, weil durch die exe-Umwandlung das Fenster schließt. Der Rechner steht aber in 280km Entfernung.
Meinst Du falls die Variable mehrere Werte enthält?
-