多年来,我一直使用 cmd/DOS/Windows
shell 并将命令行参数传递给批处理文件。例如,我有一个文件 zuzu.bat
,在这个文件中,我访问 %1
、 %2
等等。现在,我想在调用 PowerShell
脚本 when I am in a Cmd.exe shell
时执行相同的操作。我有一个脚本 xuxu.ps1
(我已经将 PS1添加到我的 PATHEXT 变量中,并将 PS1文件与 PowerShell 相关联)。但无论我做什么,我似乎无法从 $args
变量得到任何东西。它的长度总是为0。
如果我使用的是 PowerShell
shell,而不是 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>