Windows 업데이트 상태를 확인하는 PowerShell 스크립트
일반적으로 Windows 10 시스템에 최신 누적 업데이트가 설치되어 있는지 확인하려는 사용자는 이 방법을 사용 하여 Windows 10 업데이트 기록 을 확인합니다 . 이 게시물에서는 PowerShell 스크립트를 사용하여 Windows 10에 대한 최신 패치 정보를 얻는 방법을 보여줍니다.(how to get current patch information for Windows 10 using a PowerShell script.)
(PowerShell)Windows 업데이트(Windows Update) 상태 를 확인하는 PowerShell 스크립트
PowerShell 스크립트를 사용하여 현재 Windows 10 컴퓨터를 빌드하는 OS 와 장치에 사용할 수 있는 최신 업데이트를 보고할 수 있습니다. 또한 워크스테이션이 현재 사용 중인 Windows 10 버전에 대해 게시된 모든 Windows 업데이트 에 대해 보고할 수 있습니다.
스크립트를 실행하면 다음 정보가 표시됩니다.
- 현재 OS 버전
- 현재 OS 에디션
- 현재 OS 빌드 번호
- 해당 빌드 번호, KB 번호 및 정보 페이지 링크에 해당하는 설치된 업데이트
- OS 버전에 대해 사용 가능한 최신 업데이트
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
다음 명령을 사용하여 Microsoft 에서 OS 버전에 대해 게시한 모든 (Microsoft)Windows 업데이트를 나열할 수도 있습니다 .
Get-CurrentPatchInfo -ListAvailable
목록에서 미리 보기(Preview) 및 대역 외(Out-of-band) 업데이트 를 제외 하고 Microsoft 가 OS 버전에 대해 게시한 모든 Windows 업데이트를 나열 하려면 아래 명령을 실행하십시오.
Get-CurrentPatchInfo -ListAvailable -ExcludePreview -ExcludeOutofBand
그게 다야!
다음 읽기(Read next) : PowerShell 모듈 브라우저 사이트(PowerShell Module Browser site) 에서 cmdlet 및 패키지를 검색할 수 있습니다.
Related posts
Reset Windows Update Client PowerShell Script 사용
Fix Windows Update page의 이슈 버튼
Windows Update installation 시간을 향상시키는 모범 사례
Windows 11/10에서 Windows Update log을 읽는 방법과 찾는 방법
Windows Update error 0x80240061 해결하는 방법
Windows 11/10에서 Windows Update 구성 요소를 재설정하는 방법
Windows Update Windows 11/10에서 업데이트를 다운로드합니다
Fix Windows Update Error 0x800f0989 Windows 11/10
Windows 10의 Windows Update error 80072EFE
Windows 10의 Windows Update error 0x800F081F
Block Unsupported Hardware Popup Windows Update
Windows 10 New version 20H2 October 2020 Update
Fix Windows Update error 0x80070541 Windows 10에서
Fix Windows Update error 0x80070659
Windows Update or Firewall Fix error 0x8007042c
방법 Fix Windows Update Error 0xc1900201
Fix Windows Update error 0x80070422 Windows 10에서
Win Update Stop : Windows 10에서 Windows Updates 사용 안 함
Fix Windows Update Error C8000266?
Windows 10 Update Servicing Cadence 설명