【发布时间】:2017-06-12 09:16:24
【问题描述】:
几个小时以来,我一直在网上搜索,但还没有找到合适的解决方案。
我想将组作为成员添加到其他组,并将 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-group1 具有 b-group1、b-group2 和 b-group3 作为成员。
现在我的问题是我不知道如何遍历第 2 列以结束并忽略空列/值。
stackoverflow 上的其他问题是关于 CSV 和 user,group,但我不能这样做,因为 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 }
}
}
【问题讨论】:
-
到目前为止,您设置了什么样的功能?您只需要检查空列/值(例如
[String]::IsEmptyOrNull或$a -ne $null and $a -ne "")。 -
@Seth 谢谢,修复了它:
$csv | Foreach-Object { foreach ($property in $_.PSObject.Properties) { if ($property.Value -ne $null -and $property.Value -ne "") { Write-Host $_.agroup $property.Value } } } -
根据您的操作,您可能希望使用
Write-Output而不是Write-Host,因为您可以重定向它。考虑发布您的最终代码作为答案并接受它。 -
@Josh76,如果您已经解决了问题,您可以发布您的解决方案作为答案,这比在问题中添加编辑要好。这将使以后发现此问答的其他人更容易了解您所做的工作。
-
另外,如果您可以包含对人们有帮助的 CSV 文件的标题行(或确认是否没有)。
标签: powershell csv active-directory