Bitte PowerShell Profis um Hilfe!

Registrierte und angemeldete Benutzer sehen den BMW-Treff ohne Werbung Hier registrieren oder anmelden!
  • 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!

  • Fehlfunktion Rechner abhängig. Programm fordert wegen Diskpart Administratorenrechte.

    Puh, klingt nach einem Rechteproblem der UAC. Mal da dran rumgespielt?

    Dein Weg beginnt dort, wo du aufhörst anderen zu folgen :hi:

  • 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?

    Im Sinne der besseren Lesbarkeit verzichte ich auf Genderschreibweise. Es sind jedoch immer alle Geschlechter gemeint. Außerdem habe ich die Erfahrung gemacht, dass sich z. B. bei Maurer*innen mehr Frauen angesprochen fühlen, als andere Geschlechter, was nicht zielführend sein kann.

  • Martin Komischerweise funktioniert Diskpart. Get- PhysicalDisk funktioniert meines Wissens ohne Administratorenrechte. Oder habe ich Dich falsch verstanden?

    Einmal editiert, zuletzt von CP-1015 ()

  • 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?

    Im Sinne der besseren Lesbarkeit verzichte ich auf Genderschreibweise. Es sind jedoch immer alle Geschlechter gemeint. Außerdem habe ich die Erfahrung gemacht, dass sich z. B. bei Maurer*innen mehr Frauen angesprochen fühlen, als andere Geschlechter, was nicht zielführend sein kann.

  • das Programm schreibt eine txt Datei mit den Befehlen für Diskpart auf dem ausgeführten Rechner.

    Liegt es am Speicherort?

    Dein Weg beginnt dort, wo du aufhörst anderen zu folgen :hi:

  • 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?

    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.

    3 Mal editiert, zuletzt von CP-1015 ()

  • 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.

  • 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 ""

    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?

    Einmal editiert, zuletzt von CP-1015 ()