【问题标题】:foreach loop running twice?foreach 循环运行两次?
【发布时间】:2016-10-19 00:43:47
【问题描述】:

在脚本中运行此代码(从表单中获取详细信息)以获取用户组列表并从名为“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',因为它为空。”符合该条件的每个组的错误”:

[2016-10-19 113117-820]:从其他组中删除 user.test1
[2016-10-19 113117-820]:从其他组中删除 user.test1 时出错无法将参数绑定到参数“名称”,因为它为空。继续。

我知道这可能是我所缺少的 foreach 循环的逻辑中非常简单的事情。

【问题讨论】:

    标签: powershell foreach


    【解决方案1】:

    这一行似乎是您的问题:$group = $groups.name 看到您在遍历这些元素的 foreach 循环内访问数组 ($groups) 令人惊讶。你是说$group = $group.name吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-28
      • 2011-06-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      相关资源
      最近更新 更多