我有一个阵列,我通过其他方式填充。它基本上包含此样本数据;
PSComputerName ResourceName InstanceName InDesiredState ConfigurationName StartDate
-------------- ------------ ------------ -------------- ----------------- ---------
server1.domain.local WindowsFeature Backup True BaseConfig 24/04/2018 14:31:23
server1.domain.local Registry fDenyTSConnections True BaseConfig 24/04/2018 14:31:23
server1.domain.local Registry UserAuthentication True BaseConfig 24/04/2018 14:31:23
server1.domain.local File DscDemo True BaseConfig 24/04/2018 14:31:23
server5.domain.local WindowsFeature Backup True BaseConfig 24/04/2018 14:31:23
server5.domain.local Registry fDenyTSConnections True BaseConfig 24/04/2018 14:31:24
server5.domain.local Registry UserAuthentication True BaseConfig 24/04/2018 14:31:24
这是动态的,我不知道数组何时填充了内部数据。我需要将数组拆分为基于PSComputerName的唯一数组(或PSObjects)。
因此,在这种情况下,我需要为server1
和server5
提供两个单独的对象/数组,同时要记住可能有6台服务器或80台服务器。我无法想到解决这个问题的最佳方法。
答案 0 :(得分:4)
为什么不将数据分组并分别处理每个组?假设$objects
包含问题中的数据
$objects | Group-Object pscomputername | Foreach-object{
$_.Group
}
每个$_.Group
都是与唯一计算机关联的条目集合。 $_.Name
将是当前分组项的pscomputername。
所以你可能需要另外一个内部循环来迭代这些结果。
答案 1 :(得分:0)
忽略,不知道为什么我把头撞在墙上。
$Servers = $CSV.PSComputerName | select -Unique
ForEach($server in $Servers){
$arr = $CSV | Where-Object {$_.PSComputerName -eq $server}
Write-Host "Compliancy for $Server"
$arr
Write-Host "End compliancy for $server"
}
答案 2 :(得分:0)
group-object。请参阅"示例4:按ID"
分组事件日志事件