My PowerShell skryptu Foo.ps1:Jak uruchomić skrypt PowerShell z wiersza poleceń i przejść do katalogu jako parametr
Function Foo($directory)
{
echo $directory
}
if ($args.Length -eq 0)
{
echo "Usage: Foo <directory>"
}
else
{
Foo($args[0])
}
Z konsoli systemu Windows:
powershell -command .\Foo.ps1
Wyniki w: "Nazwa". \ Foo.ps1 "nie jest rozpoznawana jako nazwa polecenia cmdlet, funkcji, pliku skryptu lub obsługiwanego programu. Sprawdź pisownię nazwy lub jeśli ścieżka została uwzględniona, sprawdź, czy ścieżka jest poprawna i Spróbuj ponownie."
Jest to pomimo, że Foo.ps1 jest w bieżącym katalogu, skąd wywoływam Powershell. Próbowałem wtedy nazwać ją pełną ścieżką do pliku skryptu; ponieważ ta ścieżka zawiera przestrzeń, którą uważam, że muszę ją w jakiś sposób zacytować. Również muszę przekazać argument do skryptu, który jest również nazwą pliku zawierającą jeden lub więcej spacji. Bez względu na to, co próbuję, nie mogę go uruchomić. To jest mój najlepszy przypuszczenie tak daleko:
powershell -command "'C:\Dummy Directory 1\Foo.ps1' 'C:\Dummy Directory 2\File.txt'"
co daje błąd "Nieoczekiwany token. 'C: \ katalog 2 Dummy \ plik.txt' ekspresji lub oświadczenie w linii: 1 char: 136".
Edit: Ja pracowałem, dlaczego
powershell -command .\Foo.ps1
nie działa. To dlatego, że mój plik Microsoft.PowerShell_profile.ps1 miał
cd c: \
tak szybko jak PowerShell zaczynał się on zmieniał katalog.
Można również użyć -NoProfile podczas rozmowy z PowerShell cmd. – user467384