How to run a Powershell script from the command line and pass a directory as a parameter
powershell, powershell-2.0
Solution
try this:
powershell "C:\Dummy Directory 1\Foo.ps1 'C:\Dummy Directory 2\File.txt'"
Problem
``` PowerShell -Command .\Foo.ps1 ``` `Foo.ps1`: ``` Function Foo($directory) { echo $directory } if ($args.Length -eq 0) { echo "Usage: Foo <directory>" } else { Foo($args[0]) } ``` Despite `Foo.ps1` being in the directory from where I am calling Powershell, this results in: ``` The term '.\Foo.ps1' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. ``` - EDIT: Wasn't working because PowerShell was changing directory due to `profile.ps1` containing `cd C:\` I then tried to call it specifying the full path to the script file, but no matter what I try, I can't get it to work. I believe I have to quote the path because it contains whitespaces, as does the file name I need to pass in an argument to the script. Best guess so far: ``` PowerShell -Command "'C:\Dummy Directory 1\Foo.ps1' 'C:\Dummy Directory 2\File.txt'" ``` Outputs error: ``` Unexpected token 'C:\Dummy Directory 2\File.txt' in expression or statement. At line:1 char:136. ```