$var1 = [byte]0xDB,0x01,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x01,0x02,0x04,0xF4,0x00,0x00,0x00
$var2 = [byte]0xDB,0x01,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x01,0x00,0x03,0xF1,0x00,0x00,0x00
$value = Get-ItemProperty -Path $path | Select-Object -ExpandProperty $name -ErrorAction SilentlyContinue
switch ($value)
$var1 {act1}
$var2 {act2}
这个命令
Get-ItemProperty -Path $path | Select-Object -ExpandProperty $name -ErrorAction SilentlyContinue
输出:
219 1 0 0 16 0 0 0 1 1 0 4 242 0 0 0
但显然 switch 仅在以下形式的输出时才有效:
[字节]0xDB,0x01,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x01,0x00,0x03,0xF1,0x00,0x00,0x00
所以我需要以某种方式转换这些变量之一才能使开关工作,或者可能使用不同的命令
首先,当您将集合传递给
switch
时,每个元素都会单独评估。例如:
switch (1,2,6) {
1 {"one"}
6 { "six"}
default { "default" } }
输出:
one
default
six
其次,匹配通常应该是数字、字符串或某些返回布尔值的表达式,因此您的变量将被转换为字符串。来自about_switch:
任何不被识别为数字的未加引号的值都将被视为 细绳。为了避免混淆或意外的字符串转换,您应该 始终引用字符串值。将任何表达式括在括号 () 中, 创建子表达式,以确保计算表达式 正确。
因此,如果您只是将输入转换为字符串,它应该可以工作:
switch ("$value")
{
$var1 {act1}
$var2 {act2}
}