Pol*_*fun 51 powershell powershell-2.0
我的Powershell脚本,Foo.ps1:
Function Foo($directory)
{
echo $directory
}
if ($args.Length -eq 0)
{
echo "Usage: Foo <directory>"
}
else
{
Foo($args[0])
}
Run Code Online (Sandbox Code Playgroud)
从Windows控制台:
powershell -command .\Foo.ps1
Run Code Online (Sandbox Code Playgroud)
结果:"术语'.\ Foo.ps1'未被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是正确的,然后再试一次."
尽管Foo.ps1位于我调用Powershell的当前目录中.然后我试着调用它来指定脚本文件的完整路径; 因为这条路径包含一个空间我相信我必须以某种方式引用它.此外,我需要将参数传递给脚本,该脚本也是包含一个或多个空格的文件名.无论我尝试什么,我都无法让它发挥作用.到目前为止,这是我最好的猜测:
powershell -command "'C:\Dummy Directory 1\Foo.ps1' 'C:\Dummy Directory 2\File.txt'"
Run Code Online (Sandbox Code Playgroud)
这在表达式或语句中给出了错误"Unexpected token'C:\ Dummy Directory 2\File.txt'.在行:1 char:136".
编辑:我找出了原因
powershell -command .\Foo.ps1
Run Code Online (Sandbox Code Playgroud)
不工作.这是因为我的Microsoft.PowerShell_profile.ps1文件有
cd C:\
所以,一旦powershell启动它就会改变目录.
Loï*_*HEL 42
您正在调用脚本文件而不是命令,因此您必须使用-file,例如:
powershell -executionPolicy bypass -noexit -file "c:\temp\test.ps1" "c:\test with space"
Run Code Online (Sandbox Code Playgroud)
对于PS V2
powershell.exe -noexit &'c:\my scripts\test.ps1'
Run Code Online (Sandbox Code Playgroud)
(查看此technet页面的底部http://technet.microsoft.com/en-us/library/ee176949.aspx)
CB.*_*CB. 41
试试这个:
powershell "C:\Dummy Directory 1\Foo.ps1 'C:\Dummy Directory 2\File.txt'"
Run Code Online (Sandbox Code Playgroud)
Tom*_*ock 18
使用该标志,-Command您可以执行整个PowerShell行,就好像它是PowerShell提示符中的命令一样:
powershell -Command "& '<PATH_TO_PS1_FILE>' '<ARG_1>' '<ARG_2>' ... '<ARG_N>'"
Run Code Online (Sandbox Code Playgroud)
这解决了我在Visual Studio Post-Build和Pre-Build事件中运行PowerShell命令的问题.
| 归档时间: |
|
| 查看次数: |
349580 次 |
| 最近记录: |