2017-01-04 4 views
0

この愚かな質問を申し訳ありませんが、私は単にコマンドの結果をテストする(オブジェクトを返す)方法を知りません!ここでPowershell - 私のコマンドの結果をどのようにテストできますか?

は私のコマンドです:

write-host $command 

:私は結果を表示するには、このコマンドをしようとすると

if($command -eq $true){ 
    write-host "OK" 
} 

$command = Get-ADUser -Server "MyServer" -Filter 'Name -eq "test"' -SearchBase "DC=MyDomain,DC=COM" -Properties badpwdcount,lockedout | Select-Object LockedOut 

は、私はちょうどこのような結果をテストしたいです私は "@ {LockedOut = True}"を取得します。だから、私は次のようにも私の状態を変更しようとしました:Select-Object LockedOutLockedOutプロパティを持つ新しいオブジェクトを生成するので

if($command -eq "@{LockedOut=True}"){ 
    write-host "OK" 
} 

しかしときWrite-Host $command出力@{LockedOut=True}それは...

+0

'$ command.LockedOut -eq $ true'を(または単に' $コマンドを.LockedOut') –

+0

ありがとう、これは動作しています! – Paktros

+0

投稿した適切な答え –

答えて

1

を働いていない、それはです。

どちらか-ExpandPropertyパラメータを使用して、あなたのSelect-Object文を変更します。

$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 
} 

を、if文の中-eq $true比較は冗長である


ディレクトリに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 
} 
+0

あなたの答えをありがとう、これは非常に建設的な応答です!私はあなたの答えを受け入れるつもりです、さようなら! – Paktros

関連する問題