处理Powershell中的空数组索引错误

时间:2016-08-26 05:32:14

标签: powershell-v2.0

我有一个脚本,可以找到域中的所有服务器,然后创建一个包含结果的哈希表:

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.Filter = '(OperatingSystem=Windows*Server*)'
$objSearcher.PageSize=1000
[void] $objSearcher.PropertiesToLoad.Add("name")
[void] $objSearcher.PropertiesToLoad.Add("dnshostname")
[void] $objSearcher.PropertiesToLoad.Add("operatingsystem")
[void] $objSearcher.PropertiesToLoad.Add("operatingsystemservicepack")
$objSearcher.FindAll() | %{
    New-Object PSObject -Property @{
        Name = $_.Properties.name[0]
        FQDN = $_.Properties.dnshostname[0]
        OS = $_.Properties.operatingsystem[0]
        ServicePack = $_.Properties.operatingsystemservicepack[0]
    }
}

我得到"无法索引到空数组" 2012 R2服务器是结果的一部分时出错,因为它没有“operatingsystemservicepack”#39;属性:

Cannot index into a null array.
At C:\Nexustek\SHA\Get-DomainServers.ps1:12 char:5
+     New-Object PSObject -Property @{
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : NullArray

脚本如何处理null属性并将其显示为2012 R2服务器的空白?我一直在Stack Overflow和Internet上寻找解决方案,并找到了有关如何测试空值的文章,但没有任何内容与我的场景完全匹配。

0 个答案:

没有答案