Get-ADPrincipalGroupMembership:无法验证参数' Identity'的参数。当我尝试从已禁用的用户中删除成员属性时

时间:2017-02-07 16:19:30

标签: powershell powershell-v2.0

我们有很多禁用用户,我想写一个脚本来删除memberof属性并保留默认值(域用户)。我导入的.csv文件有一个列表5 samaccountname用于测试目的。当我执行此脚本时,我收到此错误消息。 当我为单个用户运行脚本时,我没有收到此消息但是当我导入带有用户列表的.csv文件时,我收到此错误。感谢您的帮助。

c:\user\..\Desktop> .\powerAD.ps1
  

Get-ADPrincipalGroupMembership:无法验证参数' Identity'的参数。该   参数为null或空。提供一个非null或空的参数,然后尝试   命令再次。

这是我写的脚本: 我的语法有问题吗?

Import-Module ActiveDirectory

ForEach ($user in (import-csv -path "C:\users\j\desktop\ADUSER1.csv"))

{
Get-ADPrincipalGroupMembership -Identity $user.samaccountname |
% {Remove-ADPrincipalGroupMembership -Identity $user.samaccountname -MemberOf -confirm:$false $_}
}

.csv文件采用这种格式。

jbry
pbarb
dvan

Screenshot from excel

2 个答案:

答案 0 :(得分:1)

问题是你的csv文件。您正在从中调用samaccountname属性,但没有列作为列标题。要么将其作为带有Get-Content的文本文件阅读,要么给它一个标题。

ForEach ($user in (Get-Content "C:\users\j\desktop\ADUSER1.csv")) {
    Get-ADPrincipalGroupMembership -Identity $user | 
        ? {$_.Name -ne "Domain Users"} |
        % {Remove-ADPrincipalGroupMembership -Identity $user -MemberOf $_}
}

答案 1 :(得分:0)

基于上面的评论以及来自Excel的链接图像,BenH可能是正确的。您现在需要做的是将您在PowerShell中string的名称转换为ADUser个对象,并将其作为-Identity参数传递给Get-ADPrincipalGroupMembership和{{1} }:

Remove-ADPrincipalGroupMembership