Powershell脚本在没有"powershell.exe -File"的情况下无法正常工作,也无法正常工作"powershell.exe -File"



我有一个脚本,当从ISE或VS代码运行时,它可以完美地工作,参数在等代码中给定

param(
[string]$Param1 = "example",
[string[]]$Param2 = @('arrayparam1','arrayparam2'),
[string[]]$Param3 = @('arrayparam1','arrayparam2'),
[switch]Param4 = $true
)

但每当我运行这个脚本时,代码中没有params,但有来自控制台(如(的params

.Script -Param1 example -Param2 'arrayparam1','arrayparam2' -Param3 'arrayparam1','arrayparam2' -Param4

它开始运行,但会生成空的csv文件(代码中有param,效果很好(。所以我用"powershell.exe-File"运行这个脚本(它生成了一个漂亮的文件(,如下所示:

powershell.exe -File .Script -Param1 example -Param2 'arrayparam1','arrayparam2' -Param3 'arrayparam1','arrayparam2' -Param4

但问题是它只获取数组中的第一个项。若第二个数组为空,它会将第一个数组中的第二个项作为第一个项提供给第二个阵列(这让我大吃一惊(。

我的目标是在没有"-powershell.exe-File"的情况下,使用控制台中的所有参数运行此脚本。我已经尝试了各种ExecutionPolicy,现在我正在使用RemoteSigned。我使用powershell、powershell ISE和VS代码来测试这一点,但它总是一样的。我尝试过将数组传递为"1"、"2"、('1'、'2'(、@("1"one_answers"2"(,但它始终不起作用。

请帮助

谢谢@mktlement0,你真的帮了我一把,因为我已经开始更深入地研究我的代码,我发现由于某种原因,如果没有"powershell.exe-File",将pscustomwobject数组传递给其他函数是不起作用的,所以将其作为全局变量解决了问题,脚本现在只需使用".\Filename.psi-param ex-param2 ex2等"就可以很好地运行。感谢大家的帮助:D

相关内容

最新更新