Próbuję utworzyć skrypt, który generuje listę komputerów na podstawie określonych właściwości, jakie może posiadać komputer. Na przykład próbuję utworzyć listę komputerów z systemem Windows XP i Windows 7, wyrzucać ich nazwy w pliku .csv i wyprowadzać ostateczną liczbę każdego z nich.Powershell - Filtrowanie jednostek organizacyjnych podczas korzystania z get-adcomputer
Oto mój kod tak daleko
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"
Wyjście próbki:
104 Win 7
86 Win xp
190 Total
Skrypt ten działa jednak chciałbym uczynić go nieco lepiej jest w stanie powiedzieć, który OU nie patrzeć do, ale nie mogę tego dokładnie rozgryźć.
Jeśli ktoś ma jakikolwiek wgląd w to, jak to zrobić, lub nawet po to, aby powyższy kod był jeszcze lepszy, chciałbym to usłyszeć.
Dziękujemy!
Czy mogę dodać więcej niż jeden ciąg znaków za pomocą operatora -or? $ goodOU = $ komputery |? {$ _. DistinguishedName -nie podobne ("* ou = evil, *" -or "* CN = BadCN, *")} .Nie jest to poprawna składnia chociażby – smierdziel
patrząc na przykłady, a próba tego też nie działa. $ filtersComputers = $ komputery | where-object {($ _. DistinguishedName - nie tak jak "* OU = Laptopy, *") -lub ($ _. DistinguishedName -nieponiż "* CN = Resources, *") -or ($ _. DistinguishedName - nie jak "* CN = Komputery, * ")} – smierdziel