Bitte PowerShell Profis um Hilfe!

Registrierte und angemeldete Benutzer sehen den BMW-Treff ohne Werbung
  • 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?

    Hör immer auf dein Herz, ausser der Winzer sagt "Nimm den Gewürztraminer". Dann hör auf den Winzer :party:

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

    Diese Signatur enthält unsittliche Bilder und wurde vom Server geblockt.

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

    Diese Signatur enthält unsittliche Bilder und wurde vom Server geblockt.

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

    Liegt es am Speicherort?

    Hör immer auf dein Herz, ausser der Winzer sagt "Nimm den Gewürztraminer". Dann hör auf den Winzer :party:

  • 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 ()