【发布时间】:2014-11-11 17:04:36
【问题描述】:
首先,这就是我的 csv 的样子
ip,Component,User,Pwd,type
172.22.0.67,desktopstudio,Administrator,Activlan2015,xendesktop
10.10.10.0,controller,Administrator,Activlan2015,xendesktop
172.22.0.67,storefront,Administrator,Activlan2015,xendesktop
10.10.10.0,desktopdirector,Administrator,Activlan2015,xendesktop
172.22.0.2,licenseserver,Administrator,Activlan2015,xenapp
这是我的脚本:
$Csv = "C:\springfield\Citrix\CitrixComposants.csv"
$data = Import-Csv $Csv
Foreach ($Server in $Data)
{
Import-module C:\springfield\Citrix\CitrixDeploymentActivlanModule.ps1
Deploy-Citrix -component $Server.component -ip $Server.ip -username $Server.user -pwd $Server.Pwd -type $Server.type
}
当我执行这段代码时,这是函数获取参数的方式:
Deploy-Citrix -component desktopstudio -ip 172.22.0.67 ......
Deploy-Citrix -component controller -ip 10.10.10.0 ......
Deploy-Citrix -component storefront -ip 172.22.0.67 ......
Deploy-Citrix -component desktopdirector -ip 10.10.10.0 ......
Deploy-Citrix -component licenseserver -ip 172.22.0.2 ......
当ip相同时,我想组合“组件”值。
在这个 CSV 中,我们有三个唯一的 ip 172.22.0.67、10.10.10.0 和 172.22.0.2,我想为每个唯一的 IP 组合“组件”值,只执行我的 Foreach 循环 3 次:
Deploy-Citrix -component desktopstudio,storefront -ip 172.22.0.67 ......
Deploy-Citrix -component controller,desktopdirector -ip 10.10.10.0 ......
Deploy-Citrix -component licenseserver -ip 172.22.0.2 ......
我的函数已经可以使用字符串数组了:
Function Deploy-Citrix {
[cmdletBinding(SupportsShouldProcess=$True)]
Param(
[Parameter(Mandatory=$true)]
[ValidateNotNullOrEmpty()]
[string[]]$component,
....
)
我该怎么做?
谢谢
【问题讨论】:
标签: powershell csv foreach powershell-3.0