[英]Array of PSCustomObjects as input parameter
最近,我陷入了提供数组数组作为PS脚本输入参数的问题。
我有两个脚本。 一种是启动和管理进程,第二种是在作为输入参数提供的计算机上执行某些操作。
通过-Computer
参数提交一台PC时,它成功运行
[Parameter(Mandatory=$False,
ParameterSetName="input1",
HelpMessage="Privide single computer name")]
[alias("host","workstation")]
[string]$Computer=$env:COMPUTERNAME,
或超过-InputFile
参数
[Parameter(Mandatory=$True,
ParameterSetName="input3",
HelpMessage="Privide full path to input file which contains list of hosts")]
[ValidatePattern("^.*\.(TXT|txt|CSV|csv)")]
[alias("file","input")]
[string]$InputFile,
但是,当我要提交数组时,我还有另一个输入参数。 参数名称是-Computers
:
[Parameter(Mandatory=$True,
ParameterSetName="input2",
HelpMessage="Privide array of computers")]
[alias("hosts","workstations")]
[string[]]$Computers,
在启动进程并对其进行管理的第一个脚本中,我使用以下命令:
#Define arguments for executable
$PSArguments = $null
$PSArguments += "-WindowStyle Normal "
$PSArguments += "-Command `"$Script_DPNE "
$PSArguments += "-Computers $Package`""
#Prepare process
$Process = New-Object System.Diagnostics.Process
$Process.StartInfo.UseShellExecute = $False
$Process.StartInfo.WindowStyle = "Hidden"
$Process.StartInfo.CreateNoWindow = $True
$Process.StartInfo.FileName = $Executable
$Process.StartInfo.Arguments = $PSArguments
#Start process
$Process.Start() | Out-Null
不幸的是,没有传递数组的$package
。 $Package
具有以下结构:
Hostname param1 param2
-------- ------ ------
host1 1 1
host2 0 1
host3 1 1
host4 1 0
等等..
param1和param2只能包含0或1
如何将这样的数组传递到脚本中?
最终,我找到了对我有用的解决方案。 我将作为PSCustomObjects数组的$ Package转换为如下字符串:
@([pscustomobject] @ {Hostname =“”; Param1 =; Param2 =},...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.