Powershell 如果未找到返回消息,请检查值

Powershell 如果未找到返回消息,请检查值,powershell,Powershell,我有一段代码,它使用自定义对象从数组中返回小于-5的值 $Results.Where({$\.Value-lt-5d}) 它返回我需要的值,但我无法编写一个条件,即如果上面的代码没有返回任何内容,则无法编写消息 “范围内的值” 我尝试过类似的方法,但不起作用: if($Results.Where({$\.Value-lt-5d}))-eq 0) { 写入主机('范围内的值') } 使用where方法时,您将返回一个集合。集合具有名为Count的内置属性,可用于列出集合包含的对象数 if ($Re

我有一段代码,它使用自定义对象从数组中返回小于-5的值

$Results.Where({$\.Value-lt-5d})

它返回我需要的值,但我无法编写一个条件,即如果上面的代码没有返回任何内容,则无法编写消息

“范围内的值”

我尝试过类似的方法,但不起作用:

if($Results.Where({$\.Value-lt-5d}))-eq 0)
{
写入主机('范围内的值')
}

使用
where
方法时,您将返回一个集合。集合具有名为
Count
的内置属性,可用于列出集合包含的对象数

if ($Results.Where({$_.Value -lt -5d}).Count -eq 0) {
# No objects are found
}
这种方法有一些潜在的警告。如果对象包含名为
Count
的属性,则在访问集合上的
.Count
时,集合特定的
Count
属性将覆盖该属性。如果
$Results
是单个
PSCustomObject
$Results.Where()
将失败。您需要首先将
$Results
转换为一个集合:
@($Results)。Where()


在PowerShell 7中,您可以对
if-else
场景使用三元运算符

$Results.Where({$_.Value -lt -5d}) ? "Objects Found" : "Objects not found"
if(!($Results.Where({$\.Value-lt-5d})){Write host'值在范围内。}