我正在 Azure 中运行一个简单的 powershell 查询。我希望仅过滤分配有特定标签的网络应用程序:
$apps = Get-AzWebApp | Where-Object {$_.Tags["Application"] -match "any-tag-value"}
if ($apps) {
foreach ($app in $apps) {
Write-Host $app.Name
}
}
不管怎样,无论它是否找到任何东西,前两个结果总是InvalidOperation: Cannot index into a null array.
。之后它列出了找到的内容。
如果我删除Where-Object 子句,一切都会正常。
我不确定为什么会发生此错误以及进入结果集中的这两个空数组是什么。
任何人都可以阐明这一点吗?
您的 cmdlet 列出的前 2 个资源很可能没有设置标签,并且引用未设置的属性
null
,然后对null
值进行索引会导致您看到的异常:最简单的解决方法是通过点表示法,让成员访问枚举为您处理索引,这样:
或者,您可以首先检查此类属性是否存在,然后尝试对其进行索引: