Всем привет.
В связи с модой на обновления не только ОС, но и самих ядер Windows понадобилась выборка реальной ситуации по всем рабочим станциям в домене. Тут имеет смысл делать выборку значения атрибута OperatingSystemVersion. Это номер сборки ОС. Ему в соответствие надо поставить номер версии ОС, так как это делает команда winver.
Поэтому возможные пары значений сборка+версия предварительно заносим в отдельный файлик Cores.csv, и далее пишем скрипт запроса в Powershell:
$cores = Import-CSV -Encoding UTF8 -path "d:\ps\Cores.csv" -Delimiter ";"
#Type of output file: CSV or TXT
$TypeOfFile = 'txt'
foreach($core in $cores){
$core.name
$corename = '*(' + $core.Name + ')'
if ($typeoffile -eq 'csv'){
$filename = 'd:\'+ $core.CoreV +'.csv'
}
else { $filename = 'd:\Cores.txt'
"Version of core: "+$core.coreV | Out-File $filename -Append -Force -Encoding UTF8
}
$str1 = Get-ADComputer -filter {(OperatingSystemVersion -like $corename) -and (Enabled -eq 'True') -and (OperatingSystem -notlike '*Server*')} -properties CanonicalName,Description | Select Name,CanonicalName,Description
if ($str1) {$str1 | Out-File $filename -Append -Force -Encoding UTF8} else {"No hosts." | Out-File $filename -Append -Force -Encoding UTF8}
Где файл Cores.csv имеет следующее содержание:
Name;CoreV;
19043;21H1;
19042;20H2;
19041;2004;
18363;1909;
18362;1903;
17763;1809;
17134;1803;
16299;1709;
15063;1703;
14393;1607;
10568;1511
Успехов.
Для серверов:
ReplyDeleteName;CoreV;
7601;2008_R2;
9200;2012;
9600;2012_R2;
14393;2016_1607;
16299;2016_1709;
17763;2019_1809