none
Probleme mit Skriptpfad RRS feed

  • Frage

  • Hallo zusammen,

    ich (powershell anfänger) bräuchte mal wieder eure Hilfe,

    und zwar versuche ich eine Datei in den Ordner zu schreiben, in dem das Skript ausgeführt wird. Das funktioniert unter Powershell problemlos! Wenn ich nun aber die .ps1 zu einer .exe kompiliere geht es nicht mehr! Mir wird dann immer als aktueller Pfad ein Temporärer Pfad angezeigt. Habe schon mehrere Dinge versucht:

    #Versuch 1
    $dir = ((Get-Scriptpath)[0]) + "\Passwortfile.txt"
    
    #Versuch 2
    $directory = New-Object System.Io.DirectoryInfo(".")
    $dir = $directory.Fullname + "\Passwortfile.txt"
    
    #Versuch 3
    $dir = [Environment]::CurrentDirectory = Get-Location -PSProvider FileSystem
    
    #Versuch 4
    $dir = (Split-Path -parent $MyInvocation.MyCommand.Definition) + "\Passwortfile.txt"
    
    #Versuch 5
    $dir = (split-path $Script:MyInvocation.MyCommand.Path -parent) + "\Passwortfile.txt"

    Kann mir einer weiterhelfen?

    Vielen Dank schonmal

    Freitag, 5. September 2014 10:53

Antworten

  • Da es mehrere Programme gibt mit denen man PowerShell Scripts in eine .exe umwandelt und diese unterschiedlich arbeiten, solltest du uns die Information geben, welches Programm du nutzt!

    Du musst dir Vorstellen wie diese EXE Arbeitet.

    Die EXE ist eigentlich wie eine selbst extrahierende .zip Datei.

    Das PowerShell Script und die Abhängigkeiten werden in die EXE eingepackt.

    In dem Moment wenn die EXE gestartet wird, wird ein Temporären Ordner erstellt.
    Der Name des Ordners wird durch eine zufällige GUID gebildet. Damit ist sichergestellt , das es den Ordner mit diesem Namen nicht schon gibt.
    Dann wird das PowerShell Script in diesen Ordner 'ausgepackt' und mit PowerShell.exe gestartet.
    Nachdem das Script durchgelaufen ist müsste die EXE den Ordner samt Inhalt wieder löschen.
    Dies geschieht bei jedem Ausführen der EXE.
    Der Name des Ordners ist bei jedem lauf immer wieder ein Anderer und alle Änderungen die in dem Ordner waren sind verschwunden und werden nicht in die EXE übertragen!

    Dein Pfad muss als "fester" Pfad von deinem Script adressiert werden.


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Freitag, 5. September 2014 12:11

Alle Antworten

  • Hi,

    ich bin zwar auch kein Experte, aber hast Du mal

    $dir = ".\Passwortfile.txt"

    versucht?

    Eigentlich sollte aber $dir von der Logik her nur das Verzeichnis und nicht Verzeichnis + Datei sein, oder?

    In dem Fall müsstest Du dann jeweils "+ "\Passwortfile.txt" weglassen. Der Name der Variable ist etwas verwirrend... :-)


    Gruß
    Ben
    MCITP Windows 7

    Wenn Dir meine Antwort hilft, markiere sie bitte entsprechend als Antwort! Danke! :-)

    Hinweis: Meine Posts werden "wie besehen" ohne jedwede Gewähr bereitgestellt, da menschliche, technische und andere Fehler nicht ausgeschlossen werden können.

    Freitag, 5. September 2014 10:59
  • Da es mehrere Programme gibt mit denen man PowerShell Scripts in eine .exe umwandelt und diese unterschiedlich arbeiten, solltest du uns die Information geben, welches Programm du nutzt!

    Du musst dir Vorstellen wie diese EXE Arbeitet.

    Die EXE ist eigentlich wie eine selbst extrahierende .zip Datei.

    Das PowerShell Script und die Abhängigkeiten werden in die EXE eingepackt.

    In dem Moment wenn die EXE gestartet wird, wird ein Temporären Ordner erstellt.
    Der Name des Ordners wird durch eine zufällige GUID gebildet. Damit ist sichergestellt , das es den Ordner mit diesem Namen nicht schon gibt.
    Dann wird das PowerShell Script in diesen Ordner 'ausgepackt' und mit PowerShell.exe gestartet.
    Nachdem das Script durchgelaufen ist müsste die EXE den Ordner samt Inhalt wieder löschen.
    Dies geschieht bei jedem Ausführen der EXE.
    Der Name des Ordners ist bei jedem lauf immer wieder ein Anderer und alle Änderungen die in dem Ordner waren sind verschwunden und werden nicht in die EXE übertragen!

    Dein Pfad muss als "fester" Pfad von deinem Script adressiert werden.


    PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    auf der deutschsprachigen PowerShell Community

    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+

    Freitag, 5. September 2014 12:11
  • Hallo Mitsch, das ist nun der dritte Post zu diesem Thema. Bitte erstelle keine weiteren. Falls du was zu ergänzen hast, benutze den "Bearbeiten"-Button oben, oder poste eine Antwort in diesem Thread.

    Solltest du damit irgendwelche Schwierigkeiten haben, bitte poste diese ebenfalls hier.

    Danke, Denniver


    Blog: http://bytecookie.wordpress.com

    Kostenloser Powershell Snippet Manager v3: Link
    (Schneller, besser + einfacher scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Freitag, 5. September 2014 12:30
    Moderator