gpt4 book ai didi

powershell - 为什么在调用不存在的属性时不返回错误?

转载 作者:行者123 更新时间:2023-12-03 14:37:29 26 4
gpt4 key购买 nike

鉴于以下片段

$drives = Get-PSDrive

foreach($drive in $drives)
{
Write-Host $drive.Name "`t" $drive.Root
Write-Host " - " $drive.Free "`t" $drive.PropertyDoesntExist
}

drive.PropertyDoesntExist 属性不... erm... 存在所以我希望抛出一个错误,但它返回一个空值。

我怎样才能得到错误或异常?

编辑 - 我不好 - 我问了两个问题,所以我把一个问题移到了 separate question .

最佳答案

NextHop Blog为这个问题提供了很好的解决方案。它不会给你一个错误,而是一个 bool 值。您可以使用 Get-Member获取对象类型的所有真实属性的集合,然后匹配您想要的属性。

这是字符串的示例:

PS C:\> $test = "I'm a string."
PS C:\> ($test | Get-Member | Select-Object -ExpandProperty Name) -contains "Trim"
True
PS C:\> ($test | Get-Member | Select-Object -ExpandProperty Name) -contains "Pigs"
False

如果您明确想要一个错误,您可能需要查看 Set-StrictmodeSet-StrictMode -version 2捕获不存在的属性。完成后,您也可以轻松关闭它:
PS C:\> Set-StrictMode -version 2
PS C:\> "test".Pigs
Property 'Pigs' cannot be found on this object. Make sure that it exists.
At line:1 char:8
+ "test". <<<< Pigs
+ CategoryInfo : InvalidOperation: (.:OperatorToken) [], RuntimeException
+ FullyQualifiedErrorId : PropertyNotFoundStrict

PS C:\> Set-StrictMode -off

关于powershell - 为什么在调用不存在的属性时不返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18901681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com