PowerShell中检测全0xFF列表问题:数组Equals返回False解决方法
检测PowerShell中全为0xFF的数组行
在PowerShell里,数组的Equals()方法是引用比较——只有两个变量指向同一个数组对象时才会返回True,哪怕内容完全一致的两个独立数组实例,结果也会是False,这就是你遇到问题的原因。
下面是几种可行的解决方法:
方法一:直接验证数组所有元素均为0xFF(最贴合你的需求)
既然目标是判断数组是否全是0xFF,不需要额外定义对比数组,直接检查元素即可:
$values = (0xFF, 0xFF, 0xFF, 0xFF) # 过滤出非0xFF的元素,若数量为0则说明全是0xFF $isAllFF = ($values | Where-Object { $_ -ne 0xFF }).Count -eq 0
方法二:用Compare-Object对比数组内容
如果需要和特定模板数组(比如你的$empty)对比内容是否一致:
$empty = (0xFF, 0xFF, 0xFF, 0xFF) $values = (0xFF, 0xFF, 0xFF, 0xFF) # 无差异则返回True $isEqual = -not (Compare-Object -ReferenceObject $empty -DifferenceObject $values)
方法三:使用.NET的SequenceEqual方法
借助.NET的Linq方法直接比较序列内容:
$empty = (0xFF, 0xFF, 0xFF, 0xFF) $values = (0xFF, 0xFF, 0xFF, 0xFF) $isEqual = [System.Linq.Enumerable]::SequenceEqual($empty, $values)
内容的提问来源于stack exchange,提问作者harper
相关产品推荐
相关产品推荐

