두 명령의 주요 차이점은 첫 번째 명령은 모든 결과를 얻기 위해 값을 직접 비교하지 않고 두 번째 명령은 그렇지 않습니다. 첫 번째 명령에는 NULL 결과가 포함되고 두 번째 명령에는 MDMarra가 이미 검색 한대로 포함되지 않습니다. 두 명령 모두이 cmdlet으로 시작합니다.
get-aduser
아래를 진행할 때이 cmdlet의 결과에는 -filter
매개 변수의 다른 항목에 관계없이 모든 AD 사용자가 포함 됩니다.
이제 다른 두 부분을 나누어 봅시다. 첫번째:
{-not (description -eq "auto")}
...방법
- "description 속성 이 텍스트 문자열"auto " 와 같은 위치를 파악합니다 .이 비교가 작동하려면
-eq
연산자가"auto "와 비교할 수 있도록 설명 필드에 문자열이 존재해야합니다 . NULL 값은 여기에서 삭제됩니다. NULL을 문자열 값과 비교할 수 없으므로 비교하십시오.
- 독립적으로
-eq
filter 매개 변수 는 결과가 아닌 모든 것을 제공 (description -eq "auto")
합니다. 원래 cmdlet get-aduser
에는 모든 AD 사용자가 포함 되므로 NULL이 포함됩니다 . -not
운영자 와 다른 것을 비교할 필요가 없었습니다 . (description -eq "auto")
필터 결과 이외의 모든 정보 를 제공했습니다.
귀하의 예에서 설명이 "auto", "auto"이외의 것으로 몇 백, NULL 설명이있는 몇 백 명의 AD 사용자가 있다고 가정합니다. 명령 논리를 단계별로 수행하면 다음이 수행됩니다.
- 설명이 "auto"인 모든 AD 사용자 (get-aduser)를 지정하십시오. 결과는 1 명의 사용자입니다.
- 방금 나에게 준 것이 아닌 모든 AD 사용자를 줘라. 결과는 다른 것을 가진 수백 명과 NULL을 가진 수백 명이다.
-not
연산자를 사용하여 다른 항목과 비교할 필요가 없으므로 원래 get-aduser
cmdlet 에서 캡처 된 NULL 설명 사용자가 결과에 포함되었습니다 .
두 번째 명령 :
{description -ne "auto"}
...방법
- "description 속성 이 정확한 문자열"auto "와 다른 위치를 파악하십시오. 다시이 비교가 작동하려면
-ne
연산자가"auto "와 비교할 수 있도록 설명 필드에 문자열이 존재해야합니다 . NULL 값 NULL을 문자열 값과 비교할 수 없으므로이 비교에서 삭제됩니다.
이 예에서는 설명이 "auto", "auto"이외의 다른 것의 수백, NULL 설명의 수백 명의 AD 사용자가 있다고 가정합니다. 명령 논리를 단계별로 수행하면 다음이 수행됩니다.
- 설명이 "auto"가 아닌 모든 AD 사용자에게 알려주십시오. 설명에 "auto"이외의 다른 이름을 가진 수백 명의 사용자가 생깁니다. NULL을 텍스트 문자열과 비교할 수 없기 때문에 NULL 설명으로 사용자를 끌어 들이지 않습니다.
어느 쪽이든 두 명령의 전체 차이점은 직관적이지 않습니다.
이 명령을 사용하면 다음과 같이 "-and"로 NULL을 잡을 수 있습니다.
{description -ne "auto" -and description -ne $NULL}
나는 지금 그것을 테스트 할 수 없기 때문에 구문에 100 %가 아니며 아마도 이것보다 더 좋은 방법이있을 것입니다. 모든 것이 분류되면 상당히 반 기후 적이며 설명하기 위해 많은 타이핑이 필요했지만 모든 연산자를 사용하기 전에 이와 같은 이상한 일이 발생했습니다. 모든 경고를 기억할 수 없기 때문에 많은 시행 착오를 겪었습니다 그것은 각각을 사용하는 것과 함께 진행됩니다.
참조 : http://technet.microsoft.com/en-us/library/hh847732.aspx :
비교 연산자
비교 연산자 (-eq, -ne, -gt, -lt, -le, -ge)를 사용하여 값과 테스트 조건을 비교하십시오. 예를 들어 두 문자열 값을 비교하여 값이 같은지 확인할 수 있습니다.
비교 연산자에는 정규 표현식을 사용하여 패턴을 찾는 일치 연산자 (-match, -notmatch)가 포함됩니다. 정규 표현식을 사용하여 입력 값을 변경하는 replace 연산자 (-replace); 와일드 카드 문자 (*)를 사용하여 패턴을 찾는 like 연산자 (-like, -notlike); 테스트 값이 참조 세트에 나타나는지 여부를 결정하는 포함 연산자 (in, -notin, -contains, -notcontains).
또한 비트 패턴 (-bAND, -bOR, -bXOR, -bNOT)을 포함하여 값의 비트 패턴을 조작합니다.
자세한 내용은 about_Comparison_Operators를 참조하십시오.
논리 연산자
논리 연산자 (-and, -or, -xor, -not,!)를 사용하여 조건문을 단일 복합 조건부로 연결하십시오 . 예를 들어, 논리 연산자를 사용하여 두 가지 조건이있는 객체 필터를 만들 수 있습니다.
자세한 내용은 about_Logical_Operators를 참조하십시오.