Active Directory'de Windows İşletim Sistemi Sürümlerini ve Derlemelerini Bulun


Bir Active Directory etki alanında (özellikle Windows 10 için geçerlidir) Windows işletim sistemlerinin sürümlerinin ve yapılarının envanterini çıkarmanın çeşitli yollarına bakalım. SCCM, FusionInventory ile GLPI veya en azından Windows Server Update (WSUS) ana bilgisayarı gibi bilgisayar yapılandırmalarını otomatik olarak almak için herhangi bir aracınız yoksa (ayrıca keşfedilen bilgisayarlarda Windows sürümünü almanıza da olanak tanır), bir kullanabilirsiniz. Etki alanı bilgisayarlarında Windows sürümlerini/yapılarını bulmak için PowerShell betiği.

Bağımsız bir bilgisayarda, kayıt defterinden veya SystemInfo ile bir Windows sürümü ve yapı numarası edinebilirsiniz:

Get-ItemProperty 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild

Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer

Bir Active Directory etki alanındaki etkin bilgisayarların bir listesini ve üzerlerindeki Windows sürümlerini (derlemelerini) almak için Get-ADComputers cmdlet'ini kullanabilirsiniz.

Etki alanınızdaki etkin olmayan bilgisayar hesaplarını düzenli olarak devre dışı bırakmayı ve kaldırmayı unutmayın.

PowerShell için Active Directory Modülünün bilgisayarınızda kurulu olduğundan emin olun ve aşağıdaki komutu çalıştırın:

Get-ADComputer -Filter {(Enabled -eq $True)} -Property * | Select-Object Name,OperatingSystem,OperatingSystemVersion

Windows 10 ve 11'in yapı numarasını daha uygun bir biçime (21H1, 21H2 vb.) Dönüştürmek için ek bir işlev kullanmanız gerekir.

function ConvertWindowsBuild{
[CmdletBinding()]
param(
[string] $OperatingSystem,
[string] $OperatingSystemVersion
)
if (($OperatingSystem -like '*Windows 10*') -or ($OperatingSystem -like 'Windows 11*')) {
$WinBuilds= @{
'10.0 (22621)' = "Windows 11 22H2"
'10.0 (19045)' = "Windows 10 22H2"
'10.0 (22000)' = "Windows 11 21H2"
'10.0 (19044)' = "Windows 10 21H2"
'10.0 (19043)' = "Windows 10 21H1"
'10.0 (19042)' = "Windows 10 20H2"
'10.0 (18362)' = "Windows 10 1903"
'10.0 (17763)' = "Windows 10 1809"
'10.0 (17134)' = "Windows 10 1803"
'10.0 (16299)' = "Windows 10 1709"
'10.0 (15063)' = "Windows 10 1703"
'10.0 (14393)' = "Windows 10 1607"
'10.0 (10586)' = "Windows 10 1511"
'10.0 (10240)' = "Windows 10 1507"
'10.0 (18898)' = 'Windows 10 Insider Preview'
}
$WinBuild= $WinBuilds[$OperatingSystemVersion]
}
else {$WinBuild = $OperatingSystem}
if ($WinBuild) {
$WinBuild
} else {
'Unknown'
}
}

Ardından, ana bilgisayar adları, yapı numaraları, IP adresleri ve bilgisayarın son etki alanı oturum açma bilgilerini içeren Windows sürümlerinin bir listesini almak için aşağıdaki PowerShell betiğini çalıştırın:

$Comps= Get-ADComputer -Filter {(Enabled -eq $True)} -properties *
$CompList = foreach ($Comp in $Comps) {
[PSCustomObject] @{
Name = $Comp.Name
IPv4Address = $Comp.IPv4Address
OperatingSystem = $Comp.OperatingSystem
Build = ConvertWindowsBuild -OperatingSystem $Comp.OperatingSystem -OperatingSystemVersion $Comp.OperatingSystemVersion
LastLogonDate = $Comp.LastLogonDate
}
}
$CompList | Out-GridView

Çıktıyı bir Out-GridView tablosu olarak görüntüleyebilir veya bilgisayarların listesini bir CSV dosyasına aktarabilirsiniz (

Export-Csv -Path .\windows_version_report.csv -NoTypeInformation

).

Etki alanınızdaki farklı Windows sürümlerine ve yapılarına sahip birkaç bilgisayarla ilgili özet istatistikleri görüntülemek için:

$CompList | Group-Object -Property Build | Format-Table -Property Name, Count

Ayrıca PowerShell Remoting'i kullanarak bilgisayarlarınızı uzaktan sorgulayabilir ve Windows sürümlerini alabilirsiniz. Bu yöntem daha yavaştır, ancak bir çalışma grubu ortamındaki (Çalışma Grubunda PSRemoting) bilgisayarlarda Windows sürümlerini almanıza olanak tanır. Uzak bilgisayarlardan bilgi almak için Invoke-Command cmdlet'ini kullanabilirsiniz:

Invoke-Command -ScriptBlock {Get-ItemProperty 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild} -ComputerName wsk-w12b21| Select-Object PSComputerName,ProductName, ReleaseID, CurrentBuild

Bir TXT dosyasındaki listeye göre Windows sürümlerini birden çok bilgisayarda edinebilirsiniz:

Invoke-Command -ComputerName (Get-Content c:\ps\PC_list.txt) -ScriptBlock {Get-ItemProperty 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentVersion' | Select-Object ProductName, ReleaseID, CurrentBuild}|Select-Object PSComputerName,ProductName, ReleaseID, CurrentBuild

Etki alanı bilgisayarlarında Windows sürümlerini ve yapılarını almak, eski (desteklenmeyen) Windows 10 yapılarına sahip bilgisayarları bulmak ve bunları güncellemek için bu Powershell betiklerini kullanabilirsiniz (Windows 10 Derlemesini Komut Satırıyla Nasıl Güncellerim?)

İlgili makaleler