Windows अद्यतन स्थिति की जाँच करने के लिए PowerShell स्क्रिप्ट

आमतौर पर, जो उपयोगकर्ता यह पता लगाना चाहते हैं कि उनके विंडोज 10 सिस्टम पर नवीनतम संचयी अपडेट स्थापित है या नहीं, इस पद्धति का उपयोग विंडोज 10 अपडेट इतिहास की जांच करने के लिए करें । इस पोस्ट में, हम आपको दिखाएंगे कि पावरशेल स्क्रिप्ट का उपयोग करके विंडोज 10 के लिए वर्तमान पैच जानकारी कैसे प्राप्त करें।(how to get current patch information for Windows 10 using a PowerShell script.)

Windows अद्यतन स्थिति की जाँच करने के लिए PowerShell स्क्रिप्ट

(PowerShell)Windows अद्यतन(Windows Update) स्थिति की जाँच करने के लिए PowerShell स्क्रिप्ट

पावरशेल(PowerShell) स्क्रिप्ट का उपयोग यह रिपोर्ट करने के लिए किया जा सकता है कि वर्तमान में कौन सा ओएस विंडोज 10(Windows 10) कंप्यूटर बनाता है और साथ ही कौन सा अपडेट डिवाइस के लिए उपलब्ध नवीनतम अपडेट है। यह विंडोज 10(Windows 10) के उस संस्करण के लिए प्रकाशित सभी विंडोज(Windows) अपडेट पर भी रिपोर्ट कर सकता है जो वर्तमान में वर्कस्टेशन पर है।

जब आप स्क्रिप्ट चलाते हैं, तो निम्न जानकारी प्रदर्शित होगी:

  • वर्तमान ओएस संस्करण
  • वर्तमान ओएस संस्करण
  • वर्तमान ओएस बिल्ड नंबर
  • स्थापित अद्यतन जो उस बिल्ड नंबर के साथ-साथ KB संख्या और जानकारी पृष्ठ के लिंक से मेल खाता है
  • OS संस्करण के लिए नवीनतम उपलब्ध अद्यतन

PowerShell स्क्रिप्ट का उपयोग करके (PowerShell)Windows 10 की वर्तमान पैच जानकारी प्राप्त करने के लिए , आपको Github से नीचे दिए गए कोड का उपयोग करके PowerShell स्क्रिप्ट बनाने और चलाने की(create and run the PowerShell script) आवश्यकता है ।

[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 ने आपके OS संस्करण के लिए निम्न आदेश के साथ प्रकाशित किया है:

Get-CurrentPatchInfo -ListAvailable

यदि आप सूची से पूर्वावलोकन(Preview) और आउट-ऑफ-बैंड(Out-of-band) अपडेट को बाहर करना चाहते हैं, लेकिन उन सभी विंडोज(Windows) अपडेट को सूचीबद्ध करें जिन्हें Microsoft ने आपके OS संस्करण के लिए प्रकाशित किया है, तो नीचे दिए गए कमांड को चलाएँ:

Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand

इतना ही!

आगे पढ़िए(Read next) : पावरशेल मॉड्यूल ब्राउज़र साइट(PowerShell Module Browser site) आपको cmdlets और पैकेज खोजने की सुविधा देती है।



About the author

मैं एक सॉफ्टवेयर इंजीनियर हूं, जिसके पास मोबाइल और डेस्कटॉप एप्लिकेशन पर काम करने का दो साल से अधिक का अनुभव है। मुझे विंडोज़ अपडेट, सेवाओं और जीमेल में विशेषज्ञता हासिल है। मेरे कौशल मुझे विंडोज़ एप्लिकेशन विकसित करने या ईमेल क्लाइंट बनाए रखने जैसे कार्यों के लिए सही उम्मीदवार बनाते हैं।



Related posts