दोनों के बीच महत्वपूर्ण अंतर यह है कि पहला कमांड सभी परिणामों को प्राप्त करने के लिए मूल्यों की प्रत्यक्ष तुलना शामिल नहीं करता है, और दूसरा कमांड करता है। पहले आदेश में NULL परिणाम और दूसरा शामिल नहीं है (जैसा कि MDMarra ने पहले ही खोज लिया था)। दोनों कमांड इस cmdlet से शुरू होते हैं:
get-aduser
नीचे से गुजरते समय, याद रखें कि इस cmdlet के परिणाम में सभी AD उपयोगकर्ता शामिल हैं, -filterइसके बाद पैरामीटर में किसी भी चीज़ की परवाह किए बिना ।
अब दो हिस्सों को अलग करते हैं जो अलग हैं। पहले वाला:
{-not (description -eq "auto")}
...माध्यम
- "यह पता लगाएं कि विवरण विशेषता टेक्स्ट स्ट्रिंग" ऑटो "के बराबर कहाँ है । काम की तुलना के लिए,
-eqऑपरेटर को" ऑटो "से तुलना करने में सक्षम होने के लिए एक स्ट्रिंग को वर्णन फ़ील्ड में मौजूद होने की आवश्यकता है । पूर्ण मानों को इससे हटा दिया जाता है। तुलना क्योंकि यह एक NULL को स्ट्रिंग मान से तुलना नहीं कर सकता है।
- की स्वतंत्र रूप से
-eqफ़िल्टर पैरामीटर मुझे हर कोई देता है जो इसका परिणाम नहीं है (description -eq "auto"), जिसमें NULLs शामिल होगा, क्योंकि मूल cmdlet get-aduser, में सभी AD उपयोगकर्ता शामिल हैं। इसे -notऑपरेटर के साथ किसी भी चीज़ की तुलना करने की ज़रूरत नहीं थी । इसने आपको इसके अलावा सब कुछ दिया कि (description -eq "auto")फ़िल्टर के परिणाम क्या थे।
अपने उदाहरण में मान लें कि आपके पास 1 AD उपयोगकर्ता है, जिसका विवरण "ऑटो" के बराबर है, कुछ "ऑटो" के अलावा कुछ और NULL विवरण के साथ कुछ सौ हैं। कमांड लॉजिक के माध्यम से यह करना होगा:
- मुझे सभी AD उपयोगकर्ता (get-aduser) दें जहां विवरण "ऑटो" के बराबर है - 1 उपयोगकर्ता में परिणाम
- मुझे वे सभी AD उपयोगकर्ता दें जो आपने अभी मुझे नहीं दिए हैं - परिणाम कुछ और के साथ कुछ सौ हैं और कुछ सौ जो NULL हैं।
चूंकि इसे -notऑपरेटर के उपयोग से किसी भी चीज़ की तुलना करने की आवश्यकता नहीं थी , इसलिए परिणाम में NULL विवरण उपयोगकर्ता शामिल थे जिन्हें मूल get-adusercmdlet में कैप्चर किया गया था ।
दूसरी आज्ञा:
{description -ne "auto"}
...माध्यम
- "यह पता लगाएं कि विवरण विशेषता सटीक स्ट्रिंग" ऑटो "के बराबर नहीं है । फिर, काम की तुलना के लिए, एक स्ट्रिंग को
-neऑपरेटर के लिए विवरण फ़ील्ड में मौजूद होने की आवश्यकता है ताकि वह" ऑटो "से तुलना कर सके। इसे इस तुलना से हटा दिया जाता है क्योंकि यह NULL की स्ट्रिंग मान से तुलना नहीं कर सकता है।
अपने उदाहरण में फिर से मान लें कि आपके पास 1 AD उपयोगकर्ता है, जिसका विवरण "ऑटो" के बराबर है, कुछ "ऑटो" के अलावा कुछ और NULL विवरण के साथ कुछ सौ हैं। कमांड लॉजिक के माध्यम से यह करना होगा:
- मुझे सभी AD उपयोगकर्ता दें, जहां विवरण "ऑटो" के बराबर नहीं है - उनके विवरण में "ऑटो" के अलावा कुछ और के साथ कुछ सौ उपयोगकर्ताओं में परिणाम। यह उपयोगकर्ताओं को NULL विवरण के साथ नहीं खींचता है क्योंकि यह NULL की किसी पाठ स्ट्रिंग से तुलना नहीं कर सकता है।
किसी भी तरह से दोनों आज्ञाओं के बीच का पूरा अंतर निश्चित रूप से गैर-सहज है।
इस आदेश का उपयोग करके आप NULL को "-और" के साथ इस तरह से भी पकड़ सकते हैं:
{description -ne "auto" -and description -ne $NULL}
मैं सिंटैक्स पर 100% नहीं हूं क्योंकि मैं अभी इसका परीक्षण नहीं कर सकता हूं, और शायद इससे बेहतर तरीका भी है। जब यह सब टूट जाता है तो यह काफी हद तक एंटी-क्लाइमैटिक होता है और समझाने के लिए बहुत सारे टाइपिंग लेता है, लेकिन मैं विभिन्न ऑपरेटरों और बहुत सारे परीक्षण और त्रुटि का उपयोग करने से पहले इस तरह से अजीब सामान में चला गया हूं क्योंकि मैं सभी कैविटी को कभी याद नहीं कर सकता। कि हर एक का उपयोग करने के साथ जाना।
संदर्भ: http://technet.microsoft.com/en-us/library/hh847732.aspx :
तुलना संचालक
मूल्यों और परीक्षण स्थितियों की तुलना करने के लिए तुलना ऑपरेटरों (-eq, -ne, -gt, -lt, -le -ge) का उपयोग करें। उदाहरण के लिए, आप यह निर्धारित करने के लिए दो स्ट्रिंग मानों की तुलना कर सकते हैं कि क्या वे समान हैं।
तुलना ऑपरेटरों में मैच ऑपरेटर (-मैच, -नोटमैच) शामिल हैं, जो नियमित अभिव्यक्ति का उपयोग करके पैटर्न ढूंढते हैं; प्रतिस्थापित ऑपरेटर (-replace), जो इनपुट मानों को बदलने के लिए नियमित अभिव्यक्ति का उपयोग करता है; जैसे ऑपरेटरों (जैसे, -नोटल), जो वाइल्डकार्ड वर्णों (*) का उपयोग करके पैटर्न ढूंढते हैं; और संचालक ऑपरेटरों (में -notin, -contains, -notcontains), जो निर्धारित करते हैं कि एक संदर्भ सेट में एक परीक्षण मान दिखाई देता है या नहीं।
वे बिटवाइज़ ऑपरेटरों (-bAND, -bOR, -bXOR, -bNOT) को भी मानों में बिट पैटर्न में हेरफेर करने के लिए शामिल करते हैं।
अधिक जानकारी के लिए, about_Comparison_Operators देखें
लॉजिकल ऑपरेटर्स
सशर्त बयानों को एकल जटिल स्थिति से जोड़ने के लिए तार्किक ऑपरेटरों (-और, -or, -xor, -not;) का उपयोग करें । उदाहरण के लिए, आप दो अलग-अलग स्थितियों के साथ ऑब्जेक्ट फ़िल्टर बनाने के लिए एक तार्किक-और ऑपरेटर का उपयोग कर सकते हैं।
अधिक जानकारी के लिए, लगभग_Logical_Operators देखें।