0
2つのOUに格納されているコンピュータを除いて、自分のドメイン内のすべてのコンピュータを一覧表示しようとしています。 -or演算子を使用して2番目のOUを追加するとすぐに機能が停止します。Powershell:AD内のすべてのコンピュータを検索しますが、特定のOUを除外します
[array]$Computers1 = get-adcomputer -filter '*' -SearchBase 'ou=WorkStations,dc=XXX,dc=XXX,dc=edu' | where { $_.DistinguishedName -notlike "*OU=Test,*" }
は-Or演算子は私の中に含まれる不要なコンピュータ(これらのOUのの両方に保存されているもの)を引き起こす追加:私は私の最初の不要なOUに保存されているものを除き、すべてのコンピュータを返し、これを使用して
結果。あなたが-and
たい
[array]$Computers1 = get-adcomputer -filter '*' -SearchBase 'ou=WorkStations,dc=XXX,dc=XXX,dc=edu' | where { ($_.DistinguishedName -notlike "*OU=Test,*") -or ($_.DistinguishedName -notlike "*OU=TIS,*")}
あなたは説明できますか?この誤ったことを考えていない限り、論理的には、OU名が「テスト」または「TIS」でなく、結果を返すのではないかと言います。私が間違っていない限り、-and演算子を使っているのは私の望むものではないと思われます。 – tcox8
@ tcox8 '-and'では、真となるためには両方の条件を満たす必要があります。 '-or'を使用すると、真である条件の1つが演算子を満たし、他の条件をテストする必要はありません。これは、コンピュータが複数のOUに存在することができないため、問題です。コンピュータがどちらのOUにも存在しないようにするには、両方を別々に評価する必要があります。 – Matt
@ tcox8あなたは、「OU名は「テスト」または「TIS」ではありません」と言っているのは、「OU名はテストではなく、OU名は「TIS」ではない」ということです。もしあなたが '-or'を使いたいのであれば、あなたはどこに' {-not($ _。DistinguishedName-like "* OU = Test、*")-or($ _。DistinguishedName - 「DeMorgan's Laws」(https://en.wikipedia.org/wiki/De_Morgan%27s_laws)を参照してください。 –