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

Get-ADPrincipalGroupMembership : Cannot validate argument on parameter 'Identity'. When i try to delete memberof properties from disabled users

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

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

Get-ADPrincipalGroupMembership : Cannot validate argument on parameter 'Identity'. The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.

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

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

问题出在您的 csv 文件上。您正在从中调用 samaccountname 属性,但没有列具有与列 header 相同的列。用 Get-Content 将其作为文本文件读入,或者给它一个 header.

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

根据上面的评论和您在 Excel 中的链接图片,BenH 可能是正确的。您现在需要做的是将您的名称(PowerShell 中的 string 转换为 ADUser 对象,以作为 -Identity 参数传递给 Get-ADPrincipalGroupMembershipRemove-ADPrincipalGroupMembership:

foreach ($user in (Import-CSV -Path "C:\users\j\desktop\ADUSER1.csv"))
{
    $u = Get-ADUser -Filter 'sAMAccountName -eq $user'
    $u | Get-ADPrincipalGroupMembership |
          Where-Object {$_.name -ne "Domain Users"} |
          ForEach-Object {Remove-ADPrincipalGroupMembership -Identity $u -MemberOf $_}
}