命令匹配的测试结果为false或true

时间:2015-12-21 17:17:02

标签: powershell active-directory powershell-v3.0

我正在寻找一个根据命令结果返回$true$false的函数。

有点像这样:

Function Get-ChPwd ([string] $sam) {
    $x = Get-ADUser -Identity $sam -Properties CannotChangePassword |
         Select-Object -ExpandProperty CannotChangePassword

    if( $x -match "False") {
        return $false
    } else {
        return $true
    }
}

1 个答案:

答案 0 :(得分:2)

该属性已经有一个布尔值,因此您只需返回该值即可。不过,我建议使用不同的函数名称,因此它符合naming conventions

Function Test-CannotChangePassword([string]$sam) {
    Get-ADUser -Identity $sam -Properties CannotChangePassword |
        Select-Object -ExpandProperty CannotChangePassword
}

请注意,如果不存在具有该标识的用户,则会引发错误。如果您想返回$false而不是在这种情况下抛出错误,请使用-Filter而不是-Identity并将结果转换为bool:

Function Test-CannotChangePassword([string]$sam) {
    [bool](Get-ADUser -Filter "SamAccountName -eq '$sam'" -Properties CannotChangePassword |
        Select-Object -ExpandProperty CannotChangePassword)
}