多年来,我一直使用 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>