Powershell foreach循环运行两次?

Powershell foreach循环运行两次?,powershell,foreach,Powershell,Foreach,在脚本中运行此代码,该脚本从表单获取详细信息,以获取用户组列表,并从名为Group1和Group2的组之外的所有组中删除: #remove any group memberships except Group1 and Group2 $groups = Get-ADPrincipalGroupMembership $Inputsamaccountname.Text | Where-Object -filter {$_.name -ne 'Group1' -And $_.name -ne 'Gro

在脚本中运行此代码,该脚本从表单获取详细信息,以获取用户组列表,并从名为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”绑定到参数,因为它为null。与该条件匹配的每个组都有错误:

[2016-10-19 113117-820] : Removing user.test1 from Other-group [2016-10-19 113117-820] : Error removing user.test1 from Other-group Cannot bind argument to parameter 'Name' because it is null. continuing.
我知道在我缺少的foreach循环的逻辑中可能有一些非常简单的东西

这一行似乎是您的问题:$group=$groups.name在foreach循环中访问数组$groups时,在这些元素之间进行迭代,这让人感到惊讶。您的意思是$group=$group.name吗?

这一行似乎是您的问题:$group=$groups.name在一个foreach循环中访问数组$groups并遍历这些元素,这让人惊讶。你是说$group=$group.name吗