多年来,我使用了cmd/DOS/Windows
shell,并将命令行参数传递给批处理文件。例如,我有一个文件,zuzu.bat
并在其中,我访问%1
,%2
等。现在,我想要执行相同的操作时,我会调用PowerShell
脚本when I am in a Cmd.exe shell
。我有一个脚本,xuxu.ps1
(我已经将PS1添加到我的PATHEXT变量以及与PowerShell关联的PS1文件)。但无论我做什么,我似乎都无法从$args
变量中获得任何东西。它总是有长度0.如何将命令行参数传递给PowerShell ps1文件
如果我在PowerShell
壳,而不是cmd.exe
,它的工作(当然)。但是我还不够舒适,因此无法全时在PowerShell环境中工作。我不想输入powershell.exe -command xuxu.ps1 p1 p2 p3 p4
。我想输入xuxu p1 p2 p3 p4
。
这是可能的,如果是这样,如何?
我不能去工作的样品是微不足道的,foo.ps1:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args) {
Write-Host "Arg: $arg";
}
结果总是这样:
C:\temp> foo
Num Args: 0
C:\temp> foo a b c d
Num Args: 0
c:\temp>
我觉得关键是在你的第6步,你在参数传递的PowerShell 。可执行程序。 Daniel说他已经将PS1文件与PowerShell相关联,但是没有额外的%1%*规格就不会传递参数。另请注意,-File参数在V1中不可用。这对V2来说是新的。 – 2009-08-18 16:25:00
关于-file参数的好消息我已经忘记了。 – EBGreen 2009-08-18 16:33:49
我必须安装V2才能尝试您的建议。谢谢。当你说这是一个基本的安全功能时,你说的“这个”是什么意思?从Cmd.exe调用PowerShell脚本,就像它是.com/.bat/.exe文件一样?将参数传递给脚本? – 2009-08-19 03:32:28