Mein Powershell-Skript übergeben, Foo.ps1:Wie ein Powershell-Skript von der Kommandozeile ausführen und ein Verzeichnis als Parameter
Function Foo($directory)
{
echo $directory
}
if ($args.Length -eq 0)
{
echo "Usage: Foo <directory>"
}
else
{
Foo($args[0])
}
in der Windows-Konsole:
powershell -command .\Foo.ps1
Ergebnisse in: "Der Begriff '. \ Foo.ps1' wird nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder überprüfen Sie, ob der Pfad korrekt ist und ob ein Pfad enthalten ist Versuch es noch einmal."
Dies ist trotz Foo.ps1 im aktuellen Verzeichnis von wo ich Powershell aufrufen. Ich versuchte dann, es den vollständigen Pfad zu der Skriptdatei anzugeben; Da dieser Pfad ein Leerzeichen enthält, glaube ich, dass ich es in irgendeiner Weise zitieren muss. Außerdem muss ich dem Skript ein Argument übergeben, das auch ein Dateiname ist, der ein oder mehrere Leerzeichen enthält. Egal was ich versuche, ich kann es nicht zur Arbeit bringen. Das ist meine beste Vermutung bisher:
powershell -command "'C:\Dummy Directory 1\Foo.ps1' 'C:\Dummy Directory 2\File.txt'"
, die den Fehler verursacht "Unerwarteter Token. 'C: \ Dummy-Verzeichnis 2 \ File.txt' in Ausdruck oder Anweisung Bei Zeile: 1 Zeichen: 136".
Edit: Ich habe gearbeitet, warum
powershell -command .\Foo.ps1
nicht funktionierte. Das war, weil meine Microsoft.PowerShell_profile.ps1 Datei
cd C hatte: \
so sobald Powershell wurde Anfahren es ändert Verzeichnis.
Sie auch -noprofile verwenden können, wenn Sie Powershell aufrufen aus der cmd. – user467384