使用Powershell的按位运算符

时间:2010-04-15 18:40:00

标签: powershell bit-manipulation

我正在寻找如何解决下面方案的例子:

想象一下,我的打印机具有“状态”的以下属性
0-离线
2页纸盘空盘 4 -Toner Exhausted
8 -Paper Jam

当我查询状态时,它返回值12.我可以清楚地看到这意味着打印机有墨粉耗尽和卡纸,但我如何使用Powershell解决这个问题?

由于

2 个答案:

答案 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