我有两个PowerShell脚本。第一个脚本从命令行获取两个参数,并将它们传递给第二个脚本。
error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
root /usr/share/nginx/html;
internal;
}
:
Script1.ps1
Write-Output ($args)
Write-Output ($args.Length)
. ./Script2.ps1 $args
:
Script2.ps1
这样称呼
Write-Output ($args)
Write-Output ($args.Length)
Script1.ps1 hi script1
的输出:
hi script1 2
Script1.ps1
的输出:
System.Object[] 1
问题:
Script2.ps1
上使用$args
(变成null)?Script2.ps1
通过$args
作为Script1.ps1
中的单个字符串来传递?这在PowerShell 2.0中工作正常。
答案 0 :(得分:1)
您正在从PowerShell中调用第二个脚本。因此,数组$args
不会扩展为其元素,而是作为单个数组参数传递。使用splatting使PowerShell将数组元素作为单独的参数传递。
.\Script2.ps1 @args
旁注:不需要使用点源运算符(.
)调用脚本,除非您需要脚本在与调用脚本相同的上下文中运行。