ПоверСхелл скрипта за проверу статуса Виндовс Упдате

Обично корисници који желе да сазнају да ли је најновија кумулативна исправка инсталирана на њихов Виндовс 10 систем користе овај метод да провере историју ажурирања за Виндовс 10 . У овом посту ћемо вам показати како да добијете тренутне информације о закрпама за Виндовс 10 помоћу ПоверСхелл скрипте.(how to get current patch information for Windows 10 using a PowerShell script.)

ПоверСхелл скрипта за проверу статуса Виндовс Упдате

ПоверСхелл(PowerShell) скрипта за проверу статуса Виндовс Упдате(Windows Update)

ПоверСхелл скрипта се може користити за извештавање о томе на којој се верзији (PowerShell)оперативног система Виндовс 10(Windows 10) рачунар тренутно налази, као и које је ажурирање најновије ажурирање доступно за уређај. Такође може да извештава о свим ажурирањима оперативног система Виндовс(Windows) објављеним за верзију оперативног система Виндовс 10(Windows 10) на којој је тренутно укључена радна станица.

Када покренете скрипту, биће приказане следеће информације:

  • Тренутна верзија ОС-а
  • Тренутна верзија ОС-а
  • Број тренутне верзије ОС-а
  • Инсталирано ажурирање које одговара том броју верзије, као и КБ број и линк до странице са информацијама
  • Најновије доступно ажурирање за верзију ОС-а

Да бисте добили информације о актуелним закрпама за Виндовс 10 помоћу (Windows 10)ПоверСхелл(PowerShell) скрипте, потребно је да креирате и покренете ПоверСхелл скрипту(create and run the PowerShell script) користећи код испод са Гитхуб(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

Доступна ажурирања за преглед(Preview) или ван опсега(Out-of-band) која су новија од оне коју сте инсталирали можете искључити из пријављивања као најновије доступне исправке, тако да можете само да се фокусирате на кумулативна ажурирања тако што ћете покренути наредбу испод:

Get-CurrentPatchInfo -ExcludePreview -ExcludeOutofBand

Такође можете да наведете све исправке за Виндовс које је (Windows)Мицрософт(Microsoft) објавио за вашу верзију ОС-а помоћу следеће команде:

Get-CurrentPatchInfo -ListAvailable

Ако желите да искључите ажурирања за преглед(Preview) и ван опсега(Out-of-band) са листе, али наведете сва ажурирања за Виндовс која је (Windows)Мицрософт(Microsoft) објавио за вашу верзију ОС-а, покрените наредбу у наставку:

Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand

То је то!

Прочитајте следеће(Read next) : Веб локација ПоверСхелл Модуле Бровсер(PowerShell Module Browser site) вам омогућава да претражујете цмдлете и пакете.



About the author

Ја сам софтверски инжењер са искуством у Цхроме-у и апликацијама за игре. Радио сам на решењима за прегледач Гоогле Цхроме последње 4 године и такође сам радио на играма за неколико различитих платформи. Моје вештине леже у дизајнирању, тестирању и управљању софтверским пројектима. Поред мог рада као софтверског инжењера, такође имам искуства у питањима приватности, корисничких налога и породичне безбедности.



Related posts