当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 在 PowerShell 中检查对象是否具有属性 [5 种方法]

作者:精品下载站 日期:2024-12-14 05:24:29 浏览:14 分类:玩电脑

在 PowerShell 中检查对象是否具有属性 [5 种方法]


[玩转系统] 在 PowerShell 中检查对象是否具有属性 [5 种方法]

使用 -match 参数

使用-match参数检查对象是否具有PowerShell中的属性

使用-match参数:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
[bool] ($results.PSobject.Properties.name -match "greetings")

输出 :

True

在这里,我们使用 -match 参数来检查给定对象(在我们的例子中为 $result)是否具有 greetings 属性。现在,您可以参考这篇文章来了解如何创建 $result 对象。

-match 参数将匹配并返回属性名称(如果存在),如果指定的属性不存在则不返回任何内容。请看下面的例子来理解。

使用-match参数:

 $results.psobject.Properties.name -match "greetings"
 $results.psobject.Properties.name -match "first_name"

输出 :

greetings

看,我们只得到了已经存在的 greetings 属性名称,并且没有收到第二个命令的任何错误或警告,表明 first_name 不存在。这就是为什么我们使用 [bool] 将其显式转换为 Boolean,以便在属性匹配时获得 True;否则,False

这种显式转换数据类型的过程称为类型转换。例如,如果我们不想使用 [bool] 但想获得布尔结果 (True/False),则以下代码解决方案对我们有用。

使用 -contains 参数

使用-contains参数检查对象是否具有PowerShell中的属性

使用-contains参数:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
$results.PSobject.Properties.name -contains "greetings"

输出 :

True

我们使用 -contains 参数来获取布尔输出。因此,例如,如果指定的对象包含给定的属性,我们将得到 True ;否则,False

使用 if-else

使用 if-else 块检查对象是否具有 PowerShell 中的属性

使用 if-else 块:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
if($results.greetings){
    echo "True"
}else{
echo "False"
}

输出 :

True

在上面的代码中,我们使用 if-else 块来检查给定对象是否具有指定的属性。在这里,我们使用点表示法来定位对象的特定属性。接下来,如果满足给定条件,我们使用 echo 打印 True;否则,False

.Match() 函数与 if-else 块结合使用

使用 .Match() 函数检查对象是否具有 PowerShell 中的属性

将 .Match() 函数与 if-else 块一起使用:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
if($results.PSObject.Properties.Match('greetings')){"True"}
else{"False"}

输出 :

True

此代码与前面的示例类似,我们仅使用 if-else 块来检查对象是否具有特定属性。在这里,我们在 if 条件中使用了 .Match() 函数,该函数将属性名称 greetings 作为参数。再次,像前面的例子一样,如果满足 if 条件,我们就打印 True ;否则,False

使用 Get-Member Cmdlet

使用 Get-Member cmdlet 获取属性相关详细信息(如果指定对象中存在)

使用获取成员 Cmdlet:

$greetings = "Hi"
$name = "Java2blog"

$props = $([ordered]@{
    greetings=$greetings
    name=$name
})

$results = New-Object psobject -Property $props
Get-Member -inputobject $results -name "greetings" -Membertype Properties

输出 :

   TypeName: System.Management.Automation.PSCustomObject

Name      MemberType   Definition
----      ----------   ----------
greetings NoteProperty string greetings=Hi

我们使用 Get-Member cmdlet 是因为我们有兴趣检查给定属性是否存在,并且想知道属性名称、其值和 MemberType

Get-Member cmdlet 用于获取给定对象的成员、方法和属性。我们使用 -InputObject 参数指定或通过管道将对象传递给 Get-Member

我们使用-MemberType参数来获取特定类型的成员,例如NoteProperties;否则,我们可以使用-Static参数来获取有关静态成员的信息。

请注意,Get-Member cmdlet 返回一个包含按字母顺序排列的成员的列表,其中方法首先列出。我们可以将 Get-Member cmdlet 与 if-else 块结合使用。

将 Get-Member 与 `if-else 一起使用:

if(Get-Member -inputobject $results -name "greetings" -Membertype Properties){
"True"
}
else{"False"}

输出 :

True

如果满足指定条件,上述代码的结果为 True;否则,False。我们还可以使用 Get-Member cmdlet 的别名,如下所示。

使用 Get-Member Cmdlet 的别名:

if(gm -inputobject $results -name "greetings" -Membertype Properties){"True"}
else{"False"}

输出 :

True

这就是在 PowerShell 中检查对象是否具有属性的全部内容。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯