在脚本(从表单中获取详细信息)中运行以下代码以获取用户组列表,并从名为“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/

10-11 22:47