Sự khác biệt chính giữa hai là lệnh đầu tiên không liên quan đến việc so sánh trực tiếp các giá trị để có được tất cả các kết quả và lệnh thứ hai thì có. Lệnh đầu tiên bao gồm các kết quả NULL và lệnh thứ hai thì không (như MDMarra đã được phát hiện). Cả hai lệnh bắt đầu với lệnh ghép ngắn này:
get-aduser
Khi đi qua phần bên dưới, hãy nhớ rằng kết quả của lệnh ghép ngắn này bao gồm tất cả người dùng AD bất kể mọi thứ khác trong -filter
tham số sau nó.
Bây giờ hãy chia nhỏ hai phần khác nhau. Cái đầu tiên:
{-not (description -eq "auto")}
...có nghĩa
- "tìm ra nơi thuộc tính mô tả bằng chuỗi văn bản" auto ". Để so sánh này hoạt động, một chuỗi cần tồn tại trong trường mô tả để
-eq
toán tử có thể so sánh nó với" auto ". Các giá trị NULL được loại bỏ khỏi điều này so sánh vì nó không thể so sánh NULL với giá trị chuỗi.
- độc lập với
-eq
tham số bộ lọc cung cấp cho tôi MỌI THỨ KHÔNG phải là kết quả (description -eq "auto")
, sẽ bao gồm các NULL, vì lệnh ghép gốc get-aduser
, bao gồm tất cả người dùng AD. Nó không phải so sánh bất cứ điều gì với bất cứ điều gì khác với -not
nhà điều hành. Nó chỉ cung cấp cho bạn mọi thứ ngoài kết quả của (description -eq "auto")
bộ lọc.
Trong ví dụ của bạn, giả sử bạn có 1 người dùng AD có mô tả của họ bằng "tự động", vài trăm với một cái gì đó không phải là "tự động" và vài trăm với mô tả NULL. Bước qua logic lệnh nó sẽ làm:
- Cung cấp cho tôi tất cả người dùng AD (get-aduser) trong đó mô tả bằng "tự động" - kết quả là 1 người dùng
- Hãy cho tôi tất cả những người dùng quảng cáo KHÔNG phải là những gì bạn vừa cho tôi - kết quả là vài trăm với thứ khác VÀ vài trăm người có NULL.
Vì nó không phải so sánh bất cứ thứ gì với bất kỳ thứ gì khác bằng cách sử dụng -not
toán tử, kết quả bao gồm người dùng mô tả NULL đã được ghi lại trong get-aduser
lệnh ghép ngắn ban đầu .
Lệnh thứ hai:
{description -ne "auto"}
...có nghĩa
- "tìm ra nơi thuộc tính mô tả không bằng chuỗi" auto "chính xác. Một lần nữa, để so sánh này hoạt động, một chuỗi cần tồn tại trong trường mô tả để
-ne
toán tử có thể so sánh nó với" auto ". được loại bỏ khỏi so sánh này vì nó không thể so sánh NULL với giá trị chuỗi.
Trong ví dụ của bạn một lần nữa giả sử bạn có 1 người dùng AD có mô tả của họ bằng "tự động", vài trăm với một cái gì đó không phải là "tự động" và vài trăm với mô tả NULL. Bước qua logic lệnh nó sẽ làm:
- Cung cấp cho tôi tất cả người dùng quảng cáo nơi mô tả không bằng "tự động" - kết quả trong vài trăm người dùng có nội dung khác với "tự động" trong mô tả của họ. Nó không kéo người dùng bằng các mô tả NULL vì nó không thể so sánh NULL với chuỗi văn bản.
Dù bằng cách nào, toàn bộ sự khác biệt giữa hai lệnh chắc chắn là không trực quan.
Sử dụng lệnh này, bạn sẽ có thể bắt được các NULL với "-and" trong đó giống như thế này:
{description -ne "auto" -and description -ne $NULL}
Tôi không 100% về cú pháp vì tôi không thể kiểm tra nó ngay bây giờ và có lẽ có một cách tốt hơn để làm điều đó hơn là cú pháp này. Khi tất cả bị phá vỡ, nó khá chống khí hậu và phải gõ rất nhiều để giải thích, nhưng tôi đã gặp phải những thứ kỳ lạ như thế này trước khi sử dụng các toán tử khác nhau và rất nhiều thử nghiệm và lỗi vì tôi không bao giờ có thể nhớ tất cả các cảnh báo đi cùng với việc sử dụng mỗi một.
Tham khảo: http://technet.microsoft.com/en-us/l Library / hh847732.aspx :
Toán tử so sánh
Sử dụng các toán tử so sánh (-eq, -ne, -gt, -lt, -le, -ge) để so sánh các giá trị và điều kiện kiểm tra. Ví dụ: bạn có thể so sánh hai giá trị chuỗi để xác định xem chúng có bằng nhau không.
Các toán tử so sánh bao gồm các toán tử khớp (-match, -notmatch), tìm các mẫu bằng cách sử dụng các biểu thức thông thường; toán tử thay thế (-replace), sử dụng các biểu thức chính quy để thay đổi giá trị đầu vào; các toán tử like (-like, -notlike), tìm các mẫu sử dụng các ký tự đại diện (*); và các toán tử ngăn chặn (in, -notin, -contains, -notcontains), xác định xem giá trị thử nghiệm có xuất hiện trong tập tham chiếu hay không.
Chúng cũng bao gồm các toán tử bitwise (-bAND, -bOR, -bXOR, -bNOT) để thao tác các mẫu bit trong các giá trị.
Để biết thêm thông tin, hãy xem about_Comparison_Operators
Toán tử logic
Sử dụng các toán tử logic (-and, -or, -xor, -not ,!) Để kết nối các câu điều kiện thành một điều kiện phức tạp duy nhất . Ví dụ: bạn có thể sử dụng toán tử logic và để tạo bộ lọc đối tượng với hai điều kiện khác nhau.
Để biết thêm thông tin, hãy xem about_Logical_Operators.