Ich habe etwas Powershell-Code von der Antwort auf eine andere Frage und erstellte dieses Skript, änderte es leicht, so dass ich den Dateinamen übergeben konnte.Wie wird ein nicht qualifizierter Dateiname an ein Powershell-Skript übergeben?
$file = [System.io.File]::Open($Args[0], 'Open', 'Read', 'None')
Write-Host "Press any key to continue..."
$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
$file.Close()
Es funktioniert gut, wenn ich es laufe (aus einem Fenster Powershell) mit der uneingeschränkten Datei, wenn in meinem Home-Verzeichnis oder mit ein vollständig qualifizierten Dateinamen in einem beliebigen Verzeichnis. Das Skript ist lockfile.ps1 in einem Dienstprogramme-Ordner auf meinem Pfad, und alle diese Aufrufe funktionieren wie erwartet.
C:\Users\SteveC.AFRICA> . lockfile abc.txt
C:\Users\SteveC.AFRICA> lockfile abc.txt
C:\Users\SteveC.AFRICA> lockfile .\abc.txt
C:\Users\SteveC.AFRICA> lockfile D:\Junk\abc.txt
Wenn jedoch das aktuelle Verzeichnis nicht mein Home-Verzeichnis ist, muß ich die Dateinamen auch für Dateien im aktuellen Verzeichnis vollständig qualifizieren. Also dieser Aufruf funktioniert
D:\Junk> lockfile D:\Junk\abc.txt
aber diese nicht
D:\Junk> lockfile abc.txt
D:\Junk> lockfile .\abc.txt
beide folgende Fehlerberichterstattung, an, dass sie die uneingeschränkte Datei in meinem Home-Verzeichnis namens finden erwarten.
Exception calling "Open" with "4" argument(s): "Could not find file 'C:\Users\SteveC.AFRICA\abc.txt'."
Warum ist das und was muss ich tun, um Skripte wie dies zu ermöglichen, richtig unqualifizierte Dateinamen als Parameter zu akzeptieren?
'$ Args [0]' -> '(Konvertieren-Pfad $ Args [0])' – PetSerAl
Vielen Dank. Willst du es eine Antwort machen, damit ich es als die angenommene Antwort markieren kann. –