从CSV嵌套组

时间:2017-06-12 09:16:24

标签: powershell csv active-directory


几个小时了,我正在网上搜索,但还没有找到合适的解决方案。

我想将群组添加为其他群组的成员,并将CSV作为来源 CSV看起来像(第一行是标题)......

agroup,bgroup1,bgroup2,bgroup3,...    
a-group1,b-group1,b-group2,b-group3
a-group2,b-group5
a-group3,b-group2,b-group3,b-group4,b-group5,b-group6
a-group4,b-group15,b-group23

(......等等...... a-group应代表公司角色,b-group对应资源的相应权限,但这不是这个问题的重点)

因此,遵循此示例a-group1b-group1b-group2b-group3作为成员。

现在我的问题是我不知道如何迭代第2列结束并忽略空列/值。

有关stackoverflow的其他问题是有关整齐user,group的CSV,但我无法做到这一点,因为CSV涵盖了行和列的内容。

有人请帮忙。

修改
对不起,到目前为止忘记了我的代码。

Import-Module ActiveDirectory 

$path     = Split-Path -parent $MyInvocation.MyCommand.Definition  
$newpath  = $path + "\input.csv"
$csv      = @() 
$csv      = Import-Csv -Path $newpath -Delimiter ";"

$csv | Foreach-Object { 
    foreach ($property in $_.PSObject.Properties) {
        Write-Host $_.agroup $property.Value
    } 
} 

我做了write-host进行测试。

最终修改

工作代码:

$csv | Foreach-Object { 
    foreach ($property in $_.PSObject.Properties) {
        if ($property.Value -ne $null -and $property.Value -ne "") {
        Add-ADGroupMember -Identity $_.agroup -Member $property.Value -WhatIf } 
    } 
}

1 个答案:

答案 0 :(得分:0)

使用此代码我过滤掉了空值。您可能希望删除whatif以使其正常运行。

$csv | Foreach-Object { 
    foreach ($property in $_.PSObject.Properties) {
        if ($property.Value -ne $null -and $property.Value -ne "") {
        Add-ADGroupMember -Identity $_.agroup -Member $property.Value -WhatIf } 
    } 
}