我觉得奇怪的是,您会在该代码中得到空行。想不出distinguishedname
用户的为空的场景。我确实看到的代码的一个问题可能只是您的第一个计算表达式中的错字:
@{Name="DN";Expression+{$_.properties.distinguishedname}}
应该改为
@{Name="DN";Expression={$_.properties.distinguishedname}}
但是,这应该只是产生了一个语法错误,在执行之前很容易被捕获。
过滤空白
处理这个问题的一个真正简单的 PowerShell 方法是使用一个简单的Where-Object
子句。为了论证起见,可以说GID
可以为空/空。
$result | Select-Object @{Name="DN";Expression={$_.properties.distinguishedname}},@{Name="gid";Expression={$_.properties.gidnumber }} | Where-Object{$_.GID} | Sort-Object -Property gid
在 PowerShell 中,null 或空值的计算结果为 False。Where-Object{$_.GID}
将只允许具有填充属性的对象GID
作为输出传递。您也将从字符串静态方法中获得类似的结果。这些也会增加代码的可读性。
... | Where-Object{[string]::IsNullOrWhiteSpace($_.GID)} | ...
还有[string]::IsNullOrEmpty()