Powershell 2.0 - 删除已禁用帐户列表的组成员身份

时间:2013-08-30 00:06:07

标签: powershell powershell-v2.0 activedirectorymembership group-membership

我尝试删除帐户已被禁用但不确定如何正确组合cmdlet的用户列表的AD组成员身份。这是我的尝试......

Import-CSV T:\temp\users.csv | ForEach-Object {Get-ADPrincipalGroupMembership -Identity $_.member | ForEach-Object {Remove-ADPrincipalGroupMembership -Identity $_.member -MemberOf SamAccountName}}

users.csv(下面的文件内容)

member
testuser1
testuser2
testuser3

我收到以下消息......

Remove-ADPrincipalGroupMembership : Cannot convert 'Microsoft.ActiveDirectory.Management.ADPropertyValueCollection' to
the type 'Microsoft.ActiveDirectory.Management.ADPrincipal' required by parameter 'Identity'. Specified method is not s
upported.
At line:1 char:160
+ Import-CSV T:\temp\users.csv | ForEach-Object {Get-ADPrincipalGroupMembership -Identity $_.member | ForEach-Object {R
emove-ADPrincipalGroupMembership -Identity <<<<  $_.member -MemberOf SamAccountName}}
    + CategoryInfo          : InvalidArgument: (:) [Remove-ADPrincipalGroupMembership], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.RemoveADPrincipalGro
   upMembership

1 个答案:

答案 0 :(得分:2)

通常最好还提供您正在操作的数据样本(在这种情况下, users.csv 的内容如下),因为解决问题的关键在于你正在阅读的数据。但是,在这种情况下,我相信我可以看到你在没有看到数据的情况下绊倒你。

请记住,在管道的每个阶段, $ _ 都会设置管道上一个阶段中每个对象的值。 $ _。member 在整个管道中没有一致的值。

在第二阶段,ForEach-Object {Get-ADPrincipalGroupMembership -Identity $_.member $ _。member 评估&#34;成员&#34;的值CSV文件的列。在第三阶段ForEach-Object {Remove-ADPrincipalGroupMembership -Identity $_.member -MemberOf SamAccountName}中,它评估从第二阶段传递的组对象的成员属性。这些对象没有成员属性,因此 $ _。member 为空。

您可以做的是将CSV文件(用户名,我假设?)中的值捕获到第一个 ForEach-Object 过滤器开头的变量中,并将其用作< strong> -Identity 论点:

Import-Csv T:\temp\users.csv | %{
  $user = $_.member
  Get-ADPrincipalGroupMembership -Identity $user | %{
    Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $_.SamAccountName
  }
}

另请注意, -MemberOf 的参数应为 $ _。SamAccountName 。在PowerShell 3.0中,以下为您提供每个组的 SamAccountName 属性:

Get-ADPrincipalGroupMembership -Identity $user | % SamAccountName

但是,在脚本块中,您需要 $ _。SamAccountName 。在PowerShell 2.0中(因为您已经标记了此问题),您根本无法使用裸地名称。

相关问题