completers/membershipSam.ps1
$membershipSam = { param( $commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter ) $fakeBoundParameter.remove('identity') $filter = "{0}*" -f $wordToComplete $lFilter = "(&(|(objectClass=group)(objectClass=user))(samaccountname={0}*))" -f $wordToComplete Get-ADObject @fakeBoundParameter -LDAPFilter $lFilter | ForEach-Object { $obj = $_ switch ($_.ObjectClass) { "group" { $obj | Get-ADGroup | Return-GroupObject } "user" { $obj | Get-ADUser | Return-UserObject } } } } # Enable for *-ADGroup* Get-Command *-ADPrincipalGroupMembership | ForEach-Object { Register-ArgumentCompleter -CommandName $_ -Parameter Identity -ScriptBlock $membershipSam } |