2010-04-15 11 views
21

मैं कैसे मैं नीचे परिदृश्य का समाधान होगा उदाहरण के लिए देख रहा हूँ:का उपयोग Powershell के बिटवाइज़ ऑपरेटर्स

कल्पना कीजिए अपने प्रिंटर "स्थिति"
0 -ऑफ़लाइन
2 -Paper ट्रे खाली
के लिए निम्नलिखित गुण 4 -Toner थक कर चूर
8 -Paper जाम

जब मैं क्वेरी स्थिति यह मैं स्पष्ट रूप से देख सकते हैं इसका मतलब है कि इस प्रिंटर टोनर समाप्त और एक पेपर जाम है 12 वर्ष की एक मान देता है, लेकिन मैं यह कैसे काम करेगा पावरहेल के साथ बाहर?

धन्यवाद

उत्तर

34

बूलियन बिटवाइज़ और PowerShell में ऑपरेटर -band है।

आप एक hashtable में अपने मूल्यों और विवरण परिभाषित मान लें, और प्रिंटर से 12 का मूल्य है:

$status.Keys | where { $_ -band $value } | foreach { $status.Get_Item($_) } 

:

$status = @{1 = "Offline" ; 2 = "Paper Tray Empty" ; 4 = "Toner Exhausted" ; 8 = "Paper Jam" } 
$value = 12 

फिर, इस कथन आपको शाब्दिक वर्णन दे देंगे आप पावरहेल में enum परिभाषित कर सकते हैं, लेकिन उपरोक्त काम करता है, and defining enums in Powershell seems like a lot of work

Here is an article, जो पावरहेल में बिटवाई ऑपरेटरों का उपयोग करने के तरीके के बारे में बात करता है।

8

आप पावरशेल आपके लिए अधिक काम करने दे सकते हैं। यहाँ System.IO.FileOptions का उपयोग कर एक उदाहरण है:

PS> [enum]::GetValues([io.fileoptions]) | ?{$_.value__ -band 0x90000000} 
RandomAccess 
WriteThrough 
+0

धन्यवाद कीथ, आप को पता है कि वह विज्ञापन में एक उपयोगकर्ता के लिए userAccountControl विशेषता के मूल्यों की गणना करने में संभव है ऐसा क्यों है? – fenster

+1

यदि विशेषता एक .NET विशेषता है तो हाँ। आपको बस पूर्ण नामनाम [enun] :: GetValues ​​() को निर्दिष्ट करने की आवश्यकता है। –

संबंधित मुद्दे