Powershell 从CSV嵌套组
Powershell 从CSV嵌套组,powershell,csv,active-directory,Powershell,Csv,Active Directory,我在网上搜索了几个小时,但还没有找到合适的解决方案 我想将组作为成员添加到其他组,并将CSV作为源。 CSV看起来像(第一行是标题) (…等等…其中a组应代表公司角色和b组对资源的相应权限,但这不是问题的重点) 因此,按照这个例子,a-group1有b-group1,b-group2和b-group3作为成员。 现在我的问题是,我不知道如何迭代第2列以结束并忽略空列/值 这里关于stackoverflow的其他问题是关于CSV的user,group,但我不能这样做,因为CSV覆盖了成百上千的行和
我在网上搜索了几个小时,但还没有找到合适的解决方案 我想将组作为成员添加到其他组,并将CSV作为源。
CSV看起来像(第一行是标题) (…等等…其中a组应代表公司角色和b组对资源的相应权限,但这不是问题的重点) 因此,按照这个例子,
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
}
}
我做了一个写主机
测试
最终编辑
工作代码:
$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 }
}
}
使用此代码,我过滤掉了空值。您可能需要删除
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 }
}
}
到目前为止,你能设置什么样的?您只需要检查空列/值(例如,
[String]::IsEmptyOrNull
或$a-ne$null和$a-ne”“
)。@Seth感谢您,修复了它:$csv | Foreach对象{Foreach($.PSObject.property中的属性){if($property.Value-ne$null-和$property.Value-ne”“){写入主机$\u0.agroup$property.Value}}根据您所做的,您可能希望使用<代码>写输出< /代码>而不是<代码>写主机< /C>。您可以重定向它。考虑将最终代码作为答案并接受它。@ Joj76,如果您已经解决了问题,您可以将您的解决方案发布为一个答案,这比向问题添加一个编辑要好。将来发现此问答的其他人更容易了解您所做的工作。此外,如果您可以包含CSV文件的标题行,以帮助他人(或者确认是否没有标题行)。
$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 }
}
}