我正在寻找如何解决下面方案的例子:
想象一下,我的打印机具有“状态”的以下属性
0-离线
2页纸盘空盘
4 -Toner Exhausted
8 -Paper Jam
当我查询状态时,它返回值12.我可以清楚地看到这意味着打印机有墨粉耗尽和卡纸,但我如何使用Powershell解决这个问题?
由于
答案 0 :(得分:36)
Powershell中的boolean bitwise和运算符是-band
。
假设您在哈希表中定义了值和描述,并且打印机的值为12:
$status = @{1 = "Offline" ; 2 = "Paper Tray Empty" ; 4 = "Toner Exhausted" ; 8 = "Paper Jam" }
$value = 12
然后,本声明将为您提供文字说明:
$status.Keys | where { $_ -band $value } | foreach { $status.Get_Item($_) }
你可以在Powershell中定义枚举,但上面的工作也一样,and defining enums in Powershell seems like a lot of work。
Here is an article,讨论如何在Powershell中使用按位运算符。
答案 1 :(得分:8)
您可以让PowerShell为您完成更多工作。以下是使用System.IO.FileOptions的示例:
PS> [enum]::GetValues([io.fileoptions]) | ?{$_.value__ -band 0x90000000}
RandomAccess
WriteThrough