我已经搜索过了,但是只能找到PowerShell中比较两个不同数组的帖子。我想做的是比较单个数组内部的内容,以查看其中是否所有内容都相等(例如:2,2,2,2 = true; 2,2,2,3 = false)。 有人有任何想法可以完成这个任务吗? 谢谢。
我已经搜索过了,但是只能找到PowerShell中比较两个不同数组的帖子。我想做的是比较单个数组内部的内容,以查看其中是否所有内容都相等(例如:2,2,2,2 = true; 2,2,2,3 = false)。 有人有任何想法可以完成这个任务吗? 谢谢。
您可以使用 Get-Unique
命令。
$array = @(2, 2, 2, 2)
if (($array | Get-Unique).Count -gt 1) {
Write-Host "some odd ones"
} else {
Write-Host "all the same"
}
这将计算数组中存在多少个唯一的项
我们将结果传递给if
语句进行评估
如果来自Get-Unique
的唯一结果超过一个,我们知道所有元素不相等
$true
或$false
,以便重复使用。如果发现有不相等的内容,你还可以通过跳出循环来进一步优化代码。$arr = (2,2,2,3)
$notEqual = $false;
for ($i = 1; $i -lt $arr.Length; $i++)
{
if ($arr[$i] -ne $arr[$i-1]) {$notEqual = $true}
}
if ($notEqual)
{
Write-Host "Array elements not equal"
}
else
{
Write-Host "Array members are qual"
}
另一种方法是创建一个哈希表。Group-Object
可以为您完成此工作。如果最终有多个条目,则它们并不都相等。然后,您可以通过提取哈希表键来查看所有唯一值。
$array = 2,2,2,2,3,2,3,2
$grouped = $array | Group-Object -AsHashTable
if($grouped.count -gt 1){
Write-Host All array elements are not equal -ForegroundColor Yellow
Write-Host Unique values $grouped.keys
}
else {
Write-Host All array elements are equal -ForegroundColor Green
}
$array = 2,2,2,2,2,2
$grouped = $array | Group-Object -AsHashTable
if($grouped.count -gt 1){
Write-Host All array elements are not equal -ForegroundColor Yellow
Write-Host Unique values $grouped.keys
}
else {
Write-Host All array elements are equal -ForegroundColor Green
}