在脚本(从表单中获取详细信息)中运行以下代码以获取用户组列表,并从名为“Group1”和“Group2”的组中删除所有用户组:
#remove any group memberships except Group1 and Group2
$groups = Get-ADPrincipalGroupMembership $Inputsamaccountname.Text | Where-Object -filter {$_.name -ne 'Group1' -And $_.name -ne 'Group2'}
foreach ($group in $groups) {
$group = $groups.Name
$RemovegroupMsg = "Removing " + $inputSamAccountName.Text + " from " + $group
logentryDateTime $removeGroupMsg
Remove-ADPrincipalGroupMembership -Identity $inputSamAccountName.Text -MemberOf $group -Confirm:$false
if ($Error) {
$errorMessage = "Error removing " + $inputSamAccountName.Text + " from " + $group + " " + ($Error[0].ToString()) + " continuing."
logentryDateTime $errorMessage
$Error.Clear()
continue
} elseif (!$Error) {
Write-Output "" >> $outlogfile
logentryDateTime "Successfully removed " + $inputSamAccountName.Text + " from " + $group
}
}
该脚本可以正常工作,您可以看到已删除了组,但是日志显示“无法将参数'Name'绑定(bind)到参数',因为它为null”。每个符合该条件的组的错误”:
[2016-10-19 113117-820]:从其他组中删除user.test1
[2016-10-19 113117-820]:从“其他组”中删除user.test1时出错,无法将参数绑定(bind)到参数“名称”,因为它为null。继续。
我知道在我缺少的
foreach
循环的逻辑中,这可能很简单。 最佳答案
这行似乎是您的问题:$group = $groups.name
令人惊讶的是,您在一个遍历这些元素的foreach循环内访问数组($groups
)。您是说$group = $group.name
吗?
关于powershell - foreach循环运行两次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40120276/