mio PowerShell, Foo.ps1:Come eseguire uno script PowerShell dalla riga di comando e passare una directory come parametro
Function Foo($directory)
{
echo $directory
}
if ($args.Length -eq 0)
{
echo "Usage: Foo <directory>"
}
else
{
Foo($args[0])
}
Dalla console di Windows:
powershell -command .\Foo.ps1
risultati in: "Il termine '. \ Foo.ps1' non è riconosciuto come nome di un cmdlet, funzione, file di script o programma eseguibile. Controllare l'ortografia del nome, o se è stato incluso un percorso, verificare che il percorso sia corretto e riprova."
Ciò nonostante, Foo.ps1 si trova nella directory corrente da cui si chiama Powershell. Ho quindi provato a chiamarlo specificando il percorso completo del file di script; perché questo percorso contiene uno spazio credo di doverlo citare in qualche modo. Inoltre ho bisogno di passare un argomento allo script che è anche un nome di file che contiene uno o più spazi. Non importa cosa cerco, non riesco a farlo funzionare. Questa è la mia ipotesi migliore finora:
powershell -command "'C:\Dummy Directory 1\Foo.ps1' 'C:\Dummy Directory 2\File.txt'"
che dà l'errore "token imprevisto. 'C: \ Dummy Directory 2 \ File.txt' di espressione o l'istruzione alla riga: 1 char: 136".
Edit: ho lavorato perché
powershell -command .\Foo.ps1
non ha funzionato. Questo era perché il mio file Microsoft.PowerShell_profile.ps1 aveva
cd C: \
quindi non appena PowerShell stava avviando stava cambiando directory.
È inoltre possibile utilizzare -noprofile quando si chiama da PowerShell il cmd. – user467384