带过滤器的PowerShell数组〜ParameterBindingException

时间:2019-05-31 11:07:08

标签: powershell active-directory

我正在尝试列出用户,并将其SamAccount名称与Active Directory进行比较,并过滤哪些用户AD帐户被禁用。

我在执行脚本时收到以下错误消息。

我执行以下操作:

$Names = @("Shannon.Hoffman","Kameron.Mack","Ashleigh.Reeves","Diego.Colon","Mayra Ortega","Mark.Dunn")
Get-ADUser -Filter {(Enabled -eq "False") -and (SAMAccountName -like $Names)}

我收到此错误消息:

Get-ADUser : Cannot convert 'System.Object[]' to the type 'Microsoft.ActiveDirectory.Management.ADUser' required by parameter 'Identity'. Specified method is not supported.

我也收到一条错误消息,说ParameterBindingException

我对PowerShell比较陌生。您能帮我了解我在做什么错吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

我真的建议您在尝试做有用的事情之前先学习PowerShell。事情很快就会变得很糟。

一方面,您正在使用整个列表而不是每个用户进行过滤,因此您需要使用循环。像下面这样的事情可以满足您的要求:

$Names = @("username1","username2")
Foreach ($Name in $Names){
    $User = Get-ADUser -Identity $Name
    if ($User.Enabled){
        #user is enabled, add to your list
    }
}

这里有一些额外的读物:

Foreach

Pipeline

PS AD