![](/img/trans.png)
[英]How do I pass an array or list as a parameter to a PowerShell function?
[英]How do I pass an array parameter to powershell -file?
我有以下powershell脚本:
param(
[Int32[]] $SomeInts = $null,
[String]$User = "SomeUser",
[String]$Password = "SomePassword"
)
New-Object PSObject -Property @{
Integers = $SomeInts;
Login = $User;
Password = $Password;
} | Format-List
如果我执行.\\ParameterTest.ps1 (1..10)
我得到以下内容:
Password : SomePassword
Login : SomeUser
Integers : {1, 2, 3, 4...}
但是,如果我在一个像powershell -file .\\ParameterTest.ps1 (1..10)
这样的单独的PowerShell实例中运行它,我就不会得到预期的结果powershell -file .\\ParameterTest.ps1 (1..10)
。 在那种情况下,我得到以下内容:
Password : 3
Login : 2
Integers : {1}
我的问题是如何从命令行传递数组或其他复杂数据类型?
数组( 1..10
)的各个元素作为参数传递给脚本。
另一种方法是:
powershell -command {.\test.ps1 (1..10)}
对于同时使用powershell控制台和cmd的版本:
powershell -command "&.\test.ps1 (1..10)"
答案是使用powershell.exe -EncodedCommand
并对参数进行base64编码。 有关此内容的说明,请参见PowerShell.exe控制台帮助 technet页面。 我已将他们的仪式版本压缩成一行:
powershell.exe -EncodedCommand "$([Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('.\ParameterTest.ps1 (1..10)')))"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.