【发布时间】:2018-08-01 19:13:28
【问题描述】:
代码背后的想法是获取所有计算机。然后它过滤计算机并提取操作系统和操作系统版本。然后它会测试操作系统版本是否在阵列内。如果该值存在,它将增加 1。如果该项目不在数组中,它将添加该项目并将值设置为 1。但是,结果并不像预期的那样。该网络上有超过 1000 台计算机,但是,结果仅显示每个操作系统 2 台。结果需要为其他用途提供表格。
$Adomains = @{}
$Computers = Get-ADComputer -Filter * -Properties *
foreach ($ADPC in $Computers) {
if ($ADPC.OperatingSystem -eq $null) { $os = 'NULL'}
else { $os = $ADPC.OperatingSystem }
if ($ADPC.OperatingSystemVersion -eq $null) { $osver = 'NULL'}
else { $osver = $ADPC.OperatingSystemVersion }
if ($Adomains."$os - $osver"){
$Adomains."$os - $osver"++
} else {
$Adomains | Add-Member -MemberType NoteProperty -Name "$os - $osver" -Value 1
}
}
$Adomains
以下是上述代码的结果:
Name Value
---- -----
Windows Embedded Standard -... 2
Windows 10 Enterprise - 10.... 2
Windows 10 Pro - 10.0 (17134) 2
Windows 10 Enterprise - 10.... 2
Windows 8.1 Pro - 6.3 (9600) 2
Windows 10 Pro - 10.0 (16299) 2
unknown - unknown 2
Windows 10 Enterprise - 10.... 2
Windows 10 Pro - 10.0 (14393) 2
Windows 10 Pro - 10.0 (15063) 2
Windows 7 Professional - 6.... 2
Windows 10 Pro - 10.0 (10586) 2
我试图找出我的逻辑错误在哪里。
【问题讨论】:
标签: powershell active-directory powershell-4.0