【发布时间】:2016-10-22 05:15:19
【问题描述】:
尝试将单个命令行参数传递给 Windows 7 上的 powershell 脚本,但该脚本似乎无法识别任何参数。它穿过下面的第一行
foreach($arg in $args)
{
Write-Host "Arg: $arg";
}
没有输出我在命令行上使用的任何内容,并且由于$args[0] 为空而失败。但是,如果我改为硬编码我试图从命令行分配的变量的值(它只是打开该文件并执行某些操作),我的脚本的其余部分就可以工作。
我受到这个答案Passing a variable to a powershell script via command line 的启发,特别是接受答案中的链接,并尝试使用param 块,但也没有打印出任何内容
param(
[string]$fileName
)
Write-Host "Filename: [ $fileName ]";
当像script.ps1 -filename SampleFile.txt这样调用时
当我简单地将链接中的第一个脚本复制/粘贴到新脚本中时:
Write-Host "Num Args:" $args.Length;
foreach ($arg in $args)
{
Write-Host "Arg: $arg";
}
并将其称为1.ps1 1 2 3,其输出仅为Num Args: 0。
我做错了什么?
PS:如果重要的话,这里是版本信息
PS Z:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
【问题讨论】:
-
你能提供minimal reproducible example吗?我无法用您的代码重现所描述的行为。
-
我提供了最小的、完整的示例,我完全理解这应该可以工作。但是它对我不起作用,这个问题的目的是找出原因。不幸的是,这对我不起作用,我无法满足您对示例可验证的要求。
标签: powershell windows-7 command-line-arguments