Powershell - Filtragem OUs ao usar get-adcomputer
Eu estou tentando criar um script que gera uma lista de computadores com base em propriedades específicas que um computador pode ter. Por exemplo, estou tentando fazer uma lista de computadores Windows XP e Windows 7, lançar seus nomes em um arquivo .csv e exibir a contagem final de cada um.
Aqui esta o meu codigo ate agora
import-module ActiveDirectory
$computers = get-adcomputer -Filter 'ObjectClass -eq "Computer"' -properties "OperatingSystem"
$i = 0
$j = 0
Foreach ($computer in $computers) {
if ($computer.operatingSystem -like "Windows 7*") {
$i++
'"{0}","{1}","{2}"' -f $computer.Name, $computer.OperatingSystem, "$computer.DistinguishedName" | Out-file -append C:\users\admin\desktop\test.txt
}
elseif ($computer.OperatingSystem -like "Windows XP*") {
$j++
'"{0}","{1}","{2}"' -f $computer.Name, $computer.OperatingSystem, "$computer.DistinguishedName" | Out-file -append C:\users\admin\desktop\test.txt
}
else {
$_
}
}
write-host "$i Win 7"
write-host "$j Win xp"
$k = $i+$j
write-host "$k Total"
Exemplo de saída:
104 Win 7
86 Win xp
190 Total
Este script funciona, no entanto, eu gostaria de torná-lo um pouco melhor, sendo capaz de dizer qual UO não é para olhar, mas eu não consigo descobrir isso.
Se alguém tiver algum insight sobre como fazer isso, ou mesmo apenas para melhorar o código acima, eu adoraria ouvi-lo.
Obrigado!