Я смотрю, например, того, как я решил бы сценарий ниже:
Предположите, что мой принтер имеет следующее свойство для "Состояния"
0 - Офлайн
2 - Пустой лоток для бумаги
4 - Исчерпанный тонер
8 - Заедание бумаги
Когда я запрашиваю состояние, оно возвращает значение 12. Я могу, очевидно, видеть, что это означает принтер, Тонер Исчерпал и Заедание бумаги, но как я разработал бы это с Powershell?
Спасибо
Побитовым логическим оператором и в 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.
Вы можете позволить PowerShell выполнять большую часть работы за вас. Вот пример использования System.IO.FileOptions:
PS> [enum]::GetValues([io.fileoptions]) | ?{$_.value__ -band 0x90000000}
RandomAccess
WriteThrough