Skrip PowerShell untuk memeriksa status Pembaruan Windows

Biasanya, pengguna yang ingin mengetahui apakah pembaruan kumulatif terbaru diinstal pada sistem Windows 10 mereka menggunakan metode ini untuk memeriksa Riwayat Pembaruan Windows 10 . Dalam posting ini, kami akan menunjukkan kepada Anda cara mendapatkan informasi tambalan saat ini untuk Windows 10 menggunakan skrip PowerShell.(how to get current patch information for Windows 10 using a PowerShell script.)

Skrip PowerShell untuk memeriksa status Pembaruan Windows

Skrip PowerShell(PowerShell) untuk memeriksa status Pembaruan Windows(Windows Update)

Skrip PowerShell dapat digunakan untuk melaporkan OS mana yang membangun komputer Windows 10 saat ini serta pembaruan mana yang merupakan pembaruan terbaru yang tersedia untuk perangkat. Itu juga dapat melaporkan semua pembaruan Windows yang diterbitkan untuk versi Windows 10 tempat workstation aktif saat ini.

Saat Anda menjalankan skrip, informasi berikut akan ditampilkan:

  • Versi OS saat ini
  • Edisi OS saat ini
  • Nomor Build OS saat ini
  • Pembaruan terinstal yang sesuai dengan nomor build itu, serta nomor KB dan tautan ke halaman info
  • Pembaruan terbaru yang tersedia untuk versi OS

Untuk mendapatkan informasi patch Windows 10 saat ini menggunakan skrip (Windows 10)PowerShell , Anda perlu membuat dan menjalankan skrip PowerShell(create and run the PowerShell script) menggunakan kode di bawah ini dari Github .

[CmdletBinding()]
Param(
[switch]$ListAllAvailable,
[switch]$ExcludePreview,
[switch]$ExcludeOutofBand
)
$ProgressPreference = 'SilentlyContinue'
$URI = "https://aka.ms/WindowsUpdateHistory" # Windows 10 release history

Function Get-MyWindowsVersion {
[CmdletBinding()]
Param
(
$ComputerName = $env:COMPUTERNAME
)

$Table = New-Object System.Data.DataTable
$Table.Columns.AddRange(@("ComputerName","Windows Edition","Version","OS Build"))
$ProductName = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ProductName).ProductName
Try
{
$Version = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name ReleaseID -ErrorAction Stop).ReleaseID
}
Catch
{
$Version = "N/A"
}
$CurrentBuild = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name CurrentBuild).CurrentBuild
$UBR = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name UBR).UBR
$OSVersion = $CurrentBuild + "." + $UBR
$TempTable = New-Object System.Data.DataTable
$TempTable.Columns.AddRange(@("ComputerName","Windows Edition","Version","OS Build"))
[void]$TempTable.Rows.Add($env:COMPUTERNAME,$ProductName,$Version,$OSVersion)

Return $TempTable
}

Function Convert-ParsedArray {
Param($Array)

$ArrayList = New-Object System.Collections.ArrayList
foreach ($item in $Array)
{ 
[void]$ArrayList.Add([PSCustomObject]@{
Update = $item.outerHTML.Split('>')[1].Replace('</a','').Replace('—',' - ')
KB = "KB" + $item.href.Split('/')[-1]
InfoURL = "https://support.microsoft.com" + $item.href
OSBuild = $item.outerHTML.Split('(OS ')[1].Split()[1] # Just for sorting
})
}
Return $ArrayList
}

If ($PSVersionTable.PSVersion.Major -ge 6)
{
$Response = Invoke-WebRequest -Uri $URI -ErrorAction Stop
}
else 
{
$Response = Invoke-WebRequest -Uri $URI -UseBasicParsing -ErrorAction Stop
}

If (!($Response.Links))
{ throw "Response was not parsed as HTML"}
$VersionDataRaw = $Response.Links | where {$_.outerHTML -match "supLeftNavLink" -and $_.outerHTML -match "KB"}
$CurrentWindowsVersion = Get-MyWindowsVersion -ErrorAction Stop

If ($ListAllAvailable)
{
If ($ExcludePreview -and $ExcludeOutofBand)
{
$AllAvailable = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Preview" -and $_.outerHTML -notmatch "Out-of-band"}
}
ElseIf ($ExcludePreview)
{
$AllAvailable = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Preview"}
}
ElseIf ($ExcludeOutofBand)
{
$AllAvailable = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Out-of-band"}
}
Else
{
$AllAvailable = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0]}
}
$UniqueList = (Convert-ParsedArray -Array $AllAvailable) | Sort OSBuild -Descending -Unique
$Table = New-Object System.Data.DataTable
[void]$Table.Columns.AddRange(@('Update','KB','InfoURL'))
foreach ($Update in $UniqueList)
{
[void]$Table.Rows.Add(
$Update.Update,
$Update.KB,
$Update.InfoURL
)
}
Return $Table
}

$CurrentPatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'} | Select -First 1
If ($ExcludePreview -and $ExcludeOutofBand)
{
$LatestAvailablePatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Out-of-band" -and $_.outerHTML -notmatch "Preview"} | Select -First 1
}
ElseIf ($ExcludePreview)
{
$LatestAvailablePatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Preview"} | Select -First 1
}
ElseIf ($ExcludeOutofBand)
{
$LatestAvailablePatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0] -and $_.outerHTML -notmatch "Out-of-band"} | Select -First 1
}
Else
{
$LatestAvailablePatch = $VersionDataRaw | where {$_.outerHTML -match $CurrentWindowsVersion.'OS Build'.Split('.')[0]} | Select -First 1
}


$Table = New-Object System.Data.DataTable
[void]$Table.Columns.AddRange(@('OSVersion','OSEdition','OSBuild','CurrentInstalledUpdate','CurrentInstalledUpdateKB','CurrentInstalledUpdateInfoURL','LatestAvailableUpdate','LastestAvailableUpdateKB','LastestAvailableUpdateInfoURL'))
[void]$Table.Rows.Add(
$CurrentWindowsVersion.Version,
$CurrentWindowsVersion.'Windows Edition',
$CurrentWindowsVersion.'OS Build',
$CurrentPatch.outerHTML.Split('>')[1].Replace('</a','').Replace('—',' - '),
"KB" + $CurrentPatch.href.Split('/')[-1],
"https://support.microsoft.com" + $CurrentPatch.href,
$LatestAvailablePatch.outerHTML.Split('>')[1].Replace('</a','').Replace('—',' - '),
"KB" + $LatestAvailablePatch.href.Split('/')[-1],
"https://support.microsoft.com" + $LatestAvailablePatch.href
)
Return $Table

Anda dapat mengecualikan pembaruan Pratinjau(Preview) atau Out-of-band yang tersedia yang lebih baru daripada yang telah Anda instal agar tidak dilaporkan sebagai pembaruan terbaru yang tersedia, jadi Anda bisa fokus pada pembaruan kumulatif dengan menjalankan perintah di bawah ini:

Get-CurrentPatchInfo -ExcludePreview -ExcludeOutofBand

Anda juga dapat membuat daftar semua pembaruan Windows yang telah diterbitkan (Windows)Microsoft untuk versi OS Anda dengan perintah berikut:

Get-CurrentPatchInfo -ListAvailable

Jika Anda ingin mengecualikan pembaruan Pratinjau(Preview) dan Out-of-band dari daftar tetapi mencantumkan semua pembaruan Windows yang telah diterbitkan (Windows)Microsoft untuk versi OS Anda, jalankan perintah di bawah ini:

Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand

Itu dia!

Baca selanjutnya(Read next) : Situs Browser Modul PowerShell(PowerShell Module Browser site) memungkinkan Anda mencari cmdlet & paket.



About the author

Hai, yang di sana! Saya seorang programmer komputer dengan pengalaman lebih dari 10 tahun di bidangnya. Saya berspesialisasi dalam mengembangkan dan memelihara perangkat lunak untuk pembaruan smartphone dan windows. Selain itu, saya menawarkan layanan saya sebagai perwakilan dukungan klien email bulanan.



Related posts