Obtenga información sobre el parche actual de Windows 10 mediante el script de PowerShell

Obtenga información sobre el parche actual de Windows 10 mediante el script de PowerShell

Por lo general, los usuarios que desean saber si la última actualización acumulativa está instalada en su sistema Windows 10 utilizan este método para verificar el Historial de actualizaciones de Windows 10.

La secuencia de comandos de PowerShell se puede utilizar para informar en qué sistema operativo se encuentra actualmente una computadora con Windows 10, así como qué actualización es la última actualización disponible para el dispositivo. También puede informar sobre todas las actualizaciones de Windows publicadas para la versión de Windows 10 en la que se encuentra actualmente una estación de trabajo.

Cuando ejecute el script, se mostrará la siguiente información:

  • Versión actual del sistema operativo
  • Edición de SO actual
  • Número de compilación del sistema operativo actual
  • La actualización instalada que corresponde a ese número de compilación, así como el número de KB y un enlace a la página de información.
  • La última actualización disponible para la versión del sistema operativo

Para obtener la información del parche actual de Windows 10 mediante el script de PowerShell, debe crear y ejecutar el script de PowerShell utilizando el siguiente código de Github .

[CmdletBinding ()]

Param (

[cambiar] $ ListAllAvailable,

[cambiar] $ ExcludePreview,

[cambiar] $ ExcludeOutofBand

)

$ ProgressPreference = 'Continuar silenciosamente'

$ URI = "https://aka.ms/WindowsUpdateHistory" # Historial de versiones de Windows 10

Función Get-MyWindowsVersion {

[CmdletBinding ()]

Param

(

$ ComputerName = $ env: COMPUTERNAME

)

$ Table = New-Object System.Data.DataTable

$ Table.Columns.AddRange (@ ("ComputerName", "Windows Edition", "Versión", "Compilación del SO"))

$ ProductName = (Get-ItemProperty 'HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion' -Name ProductName) .ProductName

Intentar

{

$ Version = (Get-ItemProperty 'HKLM: \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion' -Name ReleaseID -ErrorAction Stop) .ReleaseID

}

Captura

{

$ Versión = "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", "Versión", "Compilación del SO"))

[void] $ TempTable.Rows.Add ($ env: COMPUTERNAME, $ ProductName, $ Version, $ OSVersion)

Devolver $ TempTable

}

Función Convert-ParsedArray {

Param ($ Array)

$ ArrayList = New-Object System.Collections.ArrayList

foreach ($ elemento en $ Array)

{

[void] $ ArrayList.Add ([PSCustomObject] @ {

Actualizar = $ item.outerHTML.Split ('>') [1]. Reemplazar ('</ a', ''). Reemplazar ('-', '-')

KB = "KB" + $ item.href.Split ('/') [- 1]

InfoURL = "https://support.microsoft.com" + $ item.href

OSBuild = $ item.outerHTML.Split ('(OS') [1] .Split () [1] # Solo para ordenar

})

}

Devolver $ ArrayList

}

Si ($ PSVersionTable.PSVersion.Major -ge 6)

{

$ Respuesta = Invoke-WebRequest -Uri $ URI -ErrorAction Stop

}

demás

{

$ Respuesta = Invoke-WebRequest -Uri $ URI -UseBasicParsing -ErrorAction Stop

}

Si (! ($ Response.Links))

{lanzar "La respuesta no se analizó como HTML"}

$ VersionDataRaw = $ Response.Links | donde {$ _. outerHTML -match "supLeftNavLink" -and $ _. outerHTML -match "KB"}

$ CurrentWindowsVersion = Get-MyWindowsVersion -ErrorAction Stop

Si ($ ListAllAvailable)

Si ($ ExcludePreview-y $ ExcludeOutofBand)

{

$ AllAvailable = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build'.Split ('.') [0] -and $ _. outerHTML -notmatch "Preview" -and $ _. outerHTML -notmatch "Fuera de banda "}

}

ElseIf ($ ExcludePreview)

{

$ AllAvailable = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build'.Split ('.') [0] -and $ _. outerHTML -notmatch "Preview"}

}

ElseIf ($ ExcludeOutofBand)

{

$ AllAvailable = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build'.Split ('.') [0] -and $ _. outerHTML -notmatch "Fuera de banda"}

}

Demás

{

$ AllAvailable = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build'.Split ('.') [0]}

}

$ UniqueList = (Convert-ParsedArray -Array $ AllAvailable) | Ordenar OSBuild -Descending -Unique

$ Table = New-Object System.Data.DataTable

[void] $ Table.Columns.AddRange (@ ('Actualización', 'KB', 'InfoURL'))

foreach ($ Update en $ UniqueList)

{

[void] $ Table.Rows.Add (

$ Update.Update,

$ Update.KB,

$ Update.InfoURL

)

}

Devolver $ Tabla

}

$ CurrentPatch = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build '} | Seleccione -Primero 1

Si ($ ExcludePreview-y $ ExcludeOutofBand)

{

$ LatestAvailablePatch = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build'.Split ('.') [0] -and $ _. outerHTML -notmatch "Out-of-band" -and $ _. outerHTML -notmatch "Vista previa "} | Seleccione -Primero 1

}

ElseIf ($ ExcludePreview)

{

$ LatestAvailablePatch = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build'.Split ('.') [0] -and $ _. outerHTML -notmatch "Preview"} | Seleccione -Primero 1

}

ElseIf ($ ExcludeOutofBand)

{

$ LatestAvailablePatch = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build'.Split ('.') [0] -and $ _. outerHTML -notmatch "Fuera de banda"} | Seleccione -Primero 1

}

Demás

{

$ LatestAvailablePatch = $ VersionDataRaw | donde {$ _. outerHTML -match $ CurrentWindowsVersion.'OS Build'.Split ('.') [0]} | Seleccione -Primero 1

}

$ Table = New-Object System.Data.DataTable

[void] $ Table.Columns.AddRange (@ ('OSVersion', 'OSEdition', 'OSBuild', 'CurrentInstalledUpdate', 'CurrentInstalledUpdateKB', 'CurrentInstalledUpdateInfoURL', 'LatestAvailableUpdate', 'LastestAvailableUpdateURL Available'), LastestAvailableUpdateURL Available

[void] $ Table.Rows.Add (

$ CurrentWindowsVersion.Version,

$ CurrentWindowsVersion.'Windows Edition ',

$ CurrentWindowsVersion.'OS Build ',

$ CurrentPatch.outerHTML.Split ('>') [1] .Replace ('/ a', ''). Reemplazar ('-', '-'),

"KB" + $ CurrentPatch.href.Split ('/') [- 1],

"https://support.microsoft.com" + $ CurrentPatch.href,

$ LatestAvailablePatch.outerHTML.Split ('>') [1] .Replace ('/ a', ''). Reemplazar ('-', '-'),

"KB" + $ LatestAvailablePatch.href.Split ('/') [- 1],

"https://support.microsoft.com" + $ LatestAvailablePatch.href

)

Devolver $ Tabla

Puede excluir las actualizaciones de vista previa o fuera de banda disponibles que son más recientes que la que ha instalado para que no se informe como la última actualización disponible, por lo que puede concentrarse en las actualizaciones acumulativas ejecutando el siguiente comando:

Get-CurrentPatchInfo -ExcludePreview -ExcludeOutofBand

También puede enumerar todas las actualizaciones de Windows que Microsoft ha publicado para su versión de sistema operativo con el siguiente comando:

Get-CurrentPatchInfo -ListAvailable

Si desea excluir las actualizaciones de vista previa y fuera de banda de la lista, pero enumera todas las actualizaciones de Windows que Microsoft ha publicado para su versión de sistema operativo, ejecute el siguiente comando:

Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand

Gracias por visitar este sitio, espero que te haya gustado y vuelvas proximamente, compartela en las redes sociales, gracias

Compartir en Facebook Compartir en twitter

Fecha actualizacion el 2021-05-11. Fecha publicacion el 2021-05-11. Categoria: windows 10 Autor: Oscar olg Mapa del sitio Fuente: explica