Используя побитовые операторы Powershell

Я смотрю, например, того, как я решил бы сценарий ниже:

Предположите, что мой принтер имеет следующее свойство для "Состояния"
0 - Офлайн
2 - Пустой лоток для бумаги
4 - Исчерпанный тонер
8 - Заедание бумаги

Когда я запрашиваю состояние, оно возвращает значение 12. Я могу, очевидно, видеть, что это означает принтер, Тонер Исчерпал и Заедание бумаги, но как я разработал бы это с Powershell?

Спасибо

21
задан fenster 15 April 2010 в 18:39
поделиться

2 ответа

Побитовым логическим оператором и в Powershell является -диапазон .

Предположим, вы определили свои значения и описания в хэш-таблице и получили значение 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, но вышеперечисленное работает так же хорошо , а определение перечислений в Powershell кажется большой работой .

Вот статья , в которой рассказывается о том, как использовать побитовые операторы в Powershell.

37
ответ дан 29 November 2019 в 20:21
поделиться

Вы можете позволить PowerShell выполнять большую часть работы за вас. Вот пример использования System.IO.FileOptions:

PS> [enum]::GetValues([io.fileoptions]) | ?{$_.value__ -band 0x90000000}
RandomAccess
WriteThrough
8
ответ дан 29 November 2019 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: