如何将来自 csv 的多个组的 Get-ADGroupMember 修改为 运行,以用所述组的成员替换嵌套组
How to modify Get-ADGroupMember to run for multiple groups from csv, to replace nested groups with members of the said groups
您好,我正在尝试编写一个脚本来用所述组的成员替换嵌套组。我从 https://community.spiceworks.com/topic/1816091-ad-powershell-replace-nested-groups-with-members-of-said-group 找到了一个
并修改如下。其中 #Parent_1 是 AD 通讯组。
$TargetGroup= '#Parent_1'
ForEach ($Member in Get-ADGroupMember -Identity $TargetGroup) {
if ($Member.objectclass -eq 'group') {
ForEach ($SubMember in Get-ADGroupMember -Identity $Member -Recursive ) {
Add-ADGroupMember -Identity $TargetGroup -Members $SubMember.SamAccountName
}
Remove-ADGroupMember -Identity $TargetGroup -Members $Member -Confirm:$false
}
}
当用作 $TargetGroup 时,它非常适合“#Parent_1”的单个组。
但我希望 运行 使用 CSV 为 $TargetGroup 设置多个 运行,如下所示。
而不是使用 $TargetGroup= '#Parent_1', 我希望 $TargetGroup =Import-Csv -Path 。\xx.csv
使用以下 CSV。
但它不会 运行,只是通过替换它。它只是给出错误。
修改了好几处,还是时不时抛出不同的错误,还是不行。不确定每个循环都需要另一个。
有人可以帮忙吗?任何帮助将不胜感激。
PS 回答我的问题 |最终工作代码
foreach($TargetGroup in Import-Csv -Path .\xx.csv)
{
ForEach ($Member in Get-ADGroupMember -Identity $TargetGroup.samaccountname)
{
if ($Member.objectclass -eq 'group')
{
ForEach ($SubMember in Get-ADGroupMember -Identity $Member -Recursive)
{
Add-ADGroupMember -Identity $TargetGroup.samaccountname -Members $SubMember.SamAccountName
}
Remove-ADGroupMember -Identity $TargetGroup.samaccountname -Members $Member -Confirm:$false
}
}
}
你只需要循环一个$TargetGroup at a time
foreach($TargetGroup in Import-Csv -Path .\xx.csv)
{
ForEach ($Member in Get-ADGroupMember -Identity $TargetGroup)
{
if ($Member.objectclass -eq 'group')
{
ForEach ($SubMember in Get-ADGroupMember -Identity $Member -Recursive)
{
Add-ADGroupMember -Identity $TargetGroup -Members $SubMember.SamAccountName
}
Remove-ADGroupMember -Identity $TargetGroup -Members $Member -Confirm:$false
}
}
}
@Doug 谢谢.. $TargetGroup 应该是 $TargetGroup.samaccountname 这样的内部循环..及其作品!完美。
foreach($TargetGroup in Import-Csv -Path .\xx.csv)
{
ForEach ($Member in Get-ADGroupMember -Identity $TargetGroup.samaccountname)
{
if ($Member.objectclass -eq 'group')
{
ForEach ($SubMember in Get-ADGroupMember -Identity $Member -Recursive)
{
Add-ADGroupMember -Identity $TargetGroup.samaccountname -Members $SubMember.SamAccountName
}
Remove-ADGroupMember -Identity $TargetGroup.samaccountname -Members $Member -Confirm:$false
}
}
}
您好,我正在尝试编写一个脚本来用所述组的成员替换嵌套组。我从 https://community.spiceworks.com/topic/1816091-ad-powershell-replace-nested-groups-with-members-of-said-group 找到了一个 并修改如下。其中 #Parent_1 是 AD 通讯组。
$TargetGroup= '#Parent_1'
ForEach ($Member in Get-ADGroupMember -Identity $TargetGroup) {
if ($Member.objectclass -eq 'group') {
ForEach ($SubMember in Get-ADGroupMember -Identity $Member -Recursive ) {
Add-ADGroupMember -Identity $TargetGroup -Members $SubMember.SamAccountName
}
Remove-ADGroupMember -Identity $TargetGroup -Members $Member -Confirm:$false
}
}
当用作 $TargetGroup 时,它非常适合“#Parent_1”的单个组。
但我希望 运行 使用 CSV 为 $TargetGroup 设置多个 运行,如下所示。
而不是使用 $TargetGroup= '#Parent_1', 我希望 $TargetGroup =Import-Csv -Path 。\xx.csv
使用以下 CSV。
但它不会 运行,只是通过替换它。它只是给出错误。
修改了好几处,还是时不时抛出不同的错误,还是不行。不确定每个循环都需要另一个。
有人可以帮忙吗?任何帮助将不胜感激。
PS 回答我的问题 |最终工作代码
foreach($TargetGroup in Import-Csv -Path .\xx.csv)
{
ForEach ($Member in Get-ADGroupMember -Identity $TargetGroup.samaccountname)
{
if ($Member.objectclass -eq 'group')
{
ForEach ($SubMember in Get-ADGroupMember -Identity $Member -Recursive)
{
Add-ADGroupMember -Identity $TargetGroup.samaccountname -Members $SubMember.SamAccountName
}
Remove-ADGroupMember -Identity $TargetGroup.samaccountname -Members $Member -Confirm:$false
}
}
}
你只需要循环一个$TargetGroup at a time
foreach($TargetGroup in Import-Csv -Path .\xx.csv)
{
ForEach ($Member in Get-ADGroupMember -Identity $TargetGroup)
{
if ($Member.objectclass -eq 'group')
{
ForEach ($SubMember in Get-ADGroupMember -Identity $Member -Recursive)
{
Add-ADGroupMember -Identity $TargetGroup -Members $SubMember.SamAccountName
}
Remove-ADGroupMember -Identity $TargetGroup -Members $Member -Confirm:$false
}
}
}
@Doug 谢谢.. $TargetGroup 应该是 $TargetGroup.samaccountname 这样的内部循环..及其作品!完美。
foreach($TargetGroup in Import-Csv -Path .\xx.csv)
{
ForEach ($Member in Get-ADGroupMember -Identity $TargetGroup.samaccountname)
{
if ($Member.objectclass -eq 'group')
{
ForEach ($SubMember in Get-ADGroupMember -Identity $Member -Recursive)
{
Add-ADGroupMember -Identity $TargetGroup.samaccountname -Members $SubMember.SamAccountName
}
Remove-ADGroupMember -Identity $TargetGroup.samaccountname -Members $Member -Confirm:$false
}
}
}