多年以来,我一直在使用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
外壳中,而不是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>
xuxu p1 p2 p3 p4
”)。