我熟悉如何从命令行接受参数或参数并将它们传递给PowerShell:
powershell.exe -file myscript.ps1 -COMPUTER server1 -DATA abcd
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[string]$computer,
[Parameter(Mandatory=$True)]
[string]$data
)
没关系,但如果$computer
参数不止一个项目且项目数量未知,该怎么办?例如:
Powershell.exe -file myscript.ps1 -COMPUTER server1, server2, server3 -DATA abcd
此处我们不知道会有多少$computer
个项目。总会有一个,但可能有2,3,4等等。这样的事情最好如何实现?
答案 0 :(得分:3)
您可以使用[String]$Computer
代替参数array
接受多个字符串(或[String[]]$Computer
)。
示例:强>
Function Get-Foo {
[CmdletBinding()]
Param (
[Parameter(Mandatory=$True)]
[String[]]$Computer,
[Parameter(Mandatory=$True)]
[String]$Data
)
"We found $(($Computer | Measure-Object).Count) computers"
}
Get-Foo -Computer a, b, c -Data yes
# We found 3 computers
Get-Foo -Computer a, b, c, d, e, f -Data yes
# We found 6 computers
答案 1 :(得分:2)
在参数定义中指定此项。从[String]
更改为字符串数组[String[]]
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)]
[string[]]$computer,
[Parameter(Mandatory=$True)]
[string]$data
)