PowerShell中?{ $_.VirtualMachine -NE $null}语句的含义是什么
获取所有网络接口
完整命令如下:
$nics = Get-AzNetworkInterface | ?{ $_.VirtualMachine -NE $null}
?{ $_.VirtualMachine -NE $null}片段说明
逐部分拆解语法规则:
?是PowerShell中Where-Object命令的默认别名,作用是过滤管道传递过来的对象集合,只留下符合指定条件的对象。- 大括号
{}包裹的是过滤判断逻辑,会对集合里的每一个对象逐一执行判断,判断结果为真的对象才会被保留。 $_是PowerShell的特殊管道变量,固定代表当前正在被处理的单个对象,在这段代码里就是每一个查询返回的网络接口对象。.VirtualMachine是网络接口对象的内置属性:如果网卡已经关联到某台Azure虚拟机,这个属性会存储对应虚拟机的引用信息;如果网卡没有挂载到任何虚拟机(比如闲置备用网卡、已删除虚拟机遗留的网卡),这个属性就没有有效值。-NE是PowerShell的比较运算符,意思是不等于,和多数编程语言里的!=作用一致。$null是PowerShell里的空值,代表属性没有被赋值、不存在有效引用的状态。
整个片段的实际作用:
从所有查询到的Azure网络接口里,筛选出已经关联了虚拟机的网卡,丢弃未挂载虚拟机的网卡,最终筛选后的结果存入
$nics变量。
内容的提问来源于stack exchange,提问作者mayank tyagi
相关产品推荐
相关产品推荐

