很抱歉这个愚蠢的问题,但我不知道如何简单地测试我的命令结果(它返回一个对象)!
这是我的命令:
$command = Get-ADUser -Server "MyServer" -Filter 'Name -eq "test"' -SearchBase "DC=MyDomain,DC=COM" -Properties badpwdcount,lockedout | Select-Object LockedOut
我只想测试结果:
if($command -eq $true){
write-host "OK"
}
当我尝试此命令查看结果时:
write-host $command
我得到“ @ {LockedOut = True} ”。所以,我试图改变我的状况,如:
if($command -eq "@{LockedOut=True}"){
write-host "OK"
}
但它不起作用......
答案 0 :(得分:1)
当Write-Host $command
输出@{LockedOut=True}
时,这是因为Select-Object LockedOut
会生成一个LockedOut
属性的新对象。
更改Select-Object
语句以使用-ExpandProperty
参数:
$command = Get-ADUser -Server "MyServer" -Filter 'Name -eq "test"' -SearchBase "DC=MyDomain,DC=COM" -Properties badpwdcount,lockedout | Select-Object -ExpandProperty LockedOut
if($command){
# "test" user is locked out
}
或检查LockedOut
属性:
if($command.LockedOut){
# "test" user is locked out
}
如您所见,-eq $true
语句中的if
比较是多余的
请注意,如果您的目录中有多个名为test
的用户,则可能会收到意外结果。如果您按用户名查找用户,则应过滤SAMAccountName
属性(保证每个域唯一):
$command = Get-ADUser -Server "MyServer" -Filter 'SAMAccountName -eq "test"' -SearchBase "DC=MyDomain,DC=COM" -Properties badpwdcount,lockedout | Select-Object -ExpandProperty LockedOut
if($command){
# "test" user is locked out
}