PSWindowsUpdate PowerShell 모듈을 사용하면 명령줄에서 Windows 업데이트를 손쉽게 관리할 수 있습니다. 이 모듈은 Windows에 기본 포함되어 있지 않으며, PowerShell Gallery(PSGallery) 저장소에서 별도로 설치해야 합니다. PSWindowsUpdate를 활용하면 관리자가 Windows 서버와 워크스테이션의 업데이트를 원격으로 확인, 설치, 제거, 숨김 처리할 수 있습니다.
특히 GUI가 없는 Windows Server Core나 Hyper-V Server 환경, 그리고 감사(audit) 모드에서 Windows 이미지를 구성할 때 이 모듈은 매우 유용합니다.
PSWindowsUpdate 모듈 설치
Windows 10/11 및 Windows Server 2022/2019/2016에서는 PackageManagement를 통해 온라인 저장소(PSGallery)에서 다음 한 줄 명령으로 모듈을 설치할 수 있습니다:
Install-Module -Name PSWindowsUpdate -Force
설치가 완료되면 다음 명령으로 패키지를 확인합니다:
Get-Package -Name PSWindowsUpdate

구형 운영체제인 Windows Server 2012 R2/Windows 8.1 이하 버전에 모듈을 설치하려고 하면 다음과 같은 오류가 발생할 수 있습니다:
Install-Module: Unable to download from URI.Unable to download the list of available providers. Check your internet connection.
이 경우 연결에 TLS 1.2 프로토콜을 사용하도록 설정해야 합니다. 현재 PowerShell 세션에서 다음 명령으로 활성화할 수 있습니다:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
더 오래된 Windows 버전(Windows 7/8.1, Windows Server 2008 R2/2012 R2)을 사용 중이거나 인터넷에 직접 접속할 수 없는 환경이라면, PSWindowsUpdate 모듈을 수동으로 설치할 수 있습니다(오프라인 PowerShell 모듈 설치 가이드 참고).
- 인터넷이 되는 컴퓨터에서 모듈을 다운로드합니다:
Save-Module –Name PSWindowsUpdate –Path C:\ps\ - 모듈을 대상 컴퓨터의 다음 폴더로 복사합니다:
%WINDIR%\System32\WindowsPowerShell\v1.0\Modules
- PowerShell 스크립트 실행 정책을 구성합니다:
Set-ExecutionPolicy –ExecutionPolicy RemoteSigned -force - 이제 PowerShell 세션에 모듈을 가져올 수 있습니다:
Import-Module PSWindowsUpdate
참고: Windows 7/Windows Server 2008 R2에서 PSWindowsUpdate 모듈을 가져올 때 The term "Unblock-File" is not recognized as the name of a cmdlet 오류가 나타날 수 있습니다. 이는 모듈이 PowerShell 3.0부터 지원되는 일부 함수를 사용하기 때문입니다. 이 문제를 해결하려면 PowerShell 버전을 업그레이드하거나, PSWindowsUpdate.psm1 파일에서 | Unblock-File 라인을 직접 삭제해야 합니다.
컴퓨터에 PSWindowsUpdate 모듈을 설치한 후에는 Update-WUModule cmdlet을 사용하여 다른 컴퓨터나 서버에 원격으로 설치할 수 있습니다. 예를 들어 로컬 컴퓨터의 PSWindowsUpdate 모듈을 두 개의 원격 호스트에 복사하려면 다음 명령을 실행합니다(WinRM 프로토콜을 통한 원격 서버 접근 권한 필요):
$Targets = "lon-fs02", "lon-db01"
Update-WUModule -ComputerName $Targets –Local
모듈을 공유 네트워크 폴더에 내보내서 다른 컴퓨터에서 가져와 사용하려면 다음 명령을 실행합니다:
Save-Module -Name PSWindowsUpdate –Path \\lon-fs02\psmodules\
PSWindowsUpdate Cmdlet 목록
PSWindowsUpdate 모듈에서 사용 가능한 cmdlet 목록은 다음 명령으로 확인할 수 있습니다:
get-command -module PSWindowsUpdate
주요 cmdlet의 용도를 간단히 살펴보겠습니다:
- Clear-WUJob – Get-WUJob으로 작업 스케줄러의 WUJob을 정리합니다;
- Download-WindowsUpdate (
Get-WindowsUpdate –Download의 별칭) — 업데이트 목록을 가져오고 다운로드합니다; - Get-WUInstall, Install-WindowsUpdate (
Get-WindowsUpdate –Install의 별칭) – Windows 업데이트를 설치합니다; - Hide-WindowsUpdate (
Get-WindowsUpdate -Hide:$false의 별칭) – 특정 업데이트를 숨깁니다; - Uninstall-WindowsUpdate – Remove-WindowsUpdate를 통해 업데이트를 제거합니다;
- Add-WUServiceManager – 컴퓨터에 업데이트 서버(Windows Update Service Manager)를 등록합니다;
- Enable-WURemoting — PSWindowsUpdate cmdlet의 원격 사용을 허용하도록 Windows Defender 방화벽 규칙을 활성화합니다;
- Get-WindowsUpdate (Get-WUList) — 지정한 조건에 맞는 업데이트 목록을 표시하고, 검색 및 설치를 수행합니다. PSWindowsUpdate 모듈의 핵심 cmdlet으로, WSUS 서버나 Microsoft Update에서 업데이트를 다운로드·설치할 수 있으며, 업데이트 범주 선택, 특정 업데이트 지정, 설치 시 재부팅 규칙 설정도 가능합니다;
- Get-WUApiVersion – 컴퓨터의 Windows Update Agent 버전을 확인합니다;
- Get-WUHistory – 설치된 업데이트 목록(업데이트 기록)을 표시합니다;
- Get-WUInstallerStatus — Windows Installer 서비스 상태를 확인합니다;
- Get-WUJob – 작업 스케줄러에서 WUJob 업데이트 작업을 확인합니다;
- Get-WULastResults — 마지막 업데이트 검색 및 설치 날짜(LastSearchSuccessDate, LastInstallationSuccessDate)를 조회합니다;
- Get-WURebootStatus — 특정 업데이트 적용을 위해 재부팅이 필요한지 확인합니다;
- Get-WUServiceManager – 업데이트 소스 목록을 조회합니다;
- Get-WUSettings – Windows Update 클라이언트 설정을 가져옵니다;
- Invoke-WUJob – 작업 스케줄러에서 WUJobs 작업을 원격 호출하여 PSWindowsUpdate 명령을 즉시 실행합니다;
- Remove-WindowsUpdate – KB 번호로 업데이트를 제거합니다;
- Remove-WUServiceManager – Windows Update Service Manager를 비활성화합니다;
- Set-PSWUSettings – PSWindowsUpdate 모듈 설정을 XML 파일로 저장합니다;
- Set-WUSettings – Windows Update 클라이언트 설정을 구성합니다;
- Update-WUModule – PSWindowsUpdate 모듈을 업데이트합니다(현재 컴퓨터에서 복사하거나 PSGallery에서 갱신하여 원격 컴퓨터의 모듈을 업데이트할 수 있습니다);
- Reset-WUComponents – 컴퓨터의 Windows Update 에이전트를 기본 상태로 초기화합니다.

현재 Windows Update 클라이언트 설정을 확인하려면 다음 명령을 실행합니다:
Get-WUSettings
ComputerName : WKS5S2N39S2 WUServer : https://MN-WSUS:8530 WUStatusServer : https://MN-WSUS:8530 AcceptTrustedPublisherCerts : 1 ElevateNonAdmins : 1 DoNotConnectToWindowsUpdateInternetLocations : 1 TargetGroupEnabled : 1 TargetGroup : ServersProd NoAutoUpdate : 0 AUOptions : 3 - Notify before installation ScheduledInstallDay : 0 - Every Day ScheduledInstallTime : 3 UseWUServer : 1 AutoInstallMinorUpdates : 0 AlwaysAutoRebootAtScheduledTime : 0 DetectionFrequencyEnabled : 1 DetectionFrequency : 4
이 예제에서 해당 컴퓨터의 Windows Update 에이전트는 GPO를 통해 로컬 WSUS 서버에서 업데이트를 받도록 구성되어 있습니다.
Reset-WUComponents -Verbose cmdlet을 사용하면 Windows Update Agent의 모든 설정을 초기화하고, 라이브러리를 재등록하며, wususerv 서비스를 기본 상태로 복원할 수 있습니다.

PowerShell로 Windows 업데이트 검색 및 다운로드
Get-WindowsUpdate 또는 Get-WUList 명령을 사용하면 현재 컴퓨터에 대해 업데이트 서버에서 제공되는 업데이트 목록을 확인할 수 있습니다.

원격 컴퓨터에서 사용 가능한 업데이트 목록을 확인하려면 다음 명령을 실행합니다:
Get-WUList –ComputerName server2
Windows가 어디에서 업데이트를 받도록 구성되어 있는지 확인하려면 다음 명령을 실행합니다:
Get-WUServiceManager
ServiceID IsManaged IsDefault Name --------- --------- --------- ---- 8b24b027-1dee-babb-9a95-3517dfb9c552 False False DCat Flighting Prod 855e8a7c-ecb4-4ca3-b045-1dfa50104289 False False Windows Store (DCat Prod) 3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server Update Service 9482f4b4-e343-43b6-b170-9a65bc822c77 False False Windows Update

위 출력 결과를 보면 컴퓨터가 로컬 WSUS 서버(Windows Server Update Service = True)에서 업데이트를 받도록 구성되어 있습니다. 이 경우 해당 컴퓨터에 승인된 업데이트 목록이 표시됩니다.
Microsoft Update 서버(Windows 업데이트 외에 Office 등 다른 Microsoft 제품 업데이트도 포함)를 대상으로 컴퓨터를 검색하려면 다음 명령을 실행합니다:
Get-WUlist -MicrosoftUpdate
그러면 다음과 같은 경고 메시지가 표시됩니다:
Get-WUlist : Service Windows Update was not found on computer. Use Get-WUServiceManager to get registered service.
Microsoft Update 검색을 허용하려면 다음 명령을 실행합니다:
Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7
이제 Microsoft Update를 대상으로 검색할 수 있습니다. 이 예제에서는 Microsoft Visual C++ 2008과 Microsoft Silverlight에 대한 추가 업데이트가 발견되었습니다.

컴퓨터의 Windows Update Agent 버전을 확인하려면 다음 명령을 실행합니다:
Get-WUApiVersion
ComputerName PSWindowsUpdate PSWUModuleDll ApiVersion WuapiDllVersion ------------ --------------- ------------- ---------- --------------- DESKTOP-J... 2.1.1.2 2.2.0.2 8.0 10.0.19041.1320

특정 제품이나 KB를 업데이트 목록에서 제외하려면 다음 조건으로 필터링할 수 있습니다:
- 범주(
-NotCategory) - 제목(
-NotTitle) - 업데이트 번호(
-NotKBArticleID)
예를 들어 OneDrive, 드라이버 업데이트, 특정 KB를 목록에서 제외하려면 다음과 같이 실행합니다:
Get-WUlist -NotCategory "Drivers" -NotTitle "OneDrive" -NotKBArticleID KB4489873
PowerShell로 Windows 업데이트 설치하기 (Install-WindowsUpdate)
로컬 WSUS가 아닌 Windows Update 서버에서 Windows 장치에 사용 가능한 모든 업데이트를 자동으로 다운로드하고 설치하려면 다음 명령을 실행합니다:
Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot
AcceptAll 매개변수는 모든 업데이트 패키지의 설치를 자동 승인하고, AutoReboot는 업데이트 설치 후 Windows가 자동으로 재시작되도록 합니다.
다음 옵션들도 함께 사용할 수 있습니다:
- IgnoreReboot – 자동 재부팅을 비활성화합니다;
- ScheduleReboot – 컴퓨터 재시작 시간을 정확하게 지정합니다.
업데이트 설치 기록을 로그 파일로 저장할 수도 있습니다(WindowsUpdate.log 파일 대신 활용 가능):
Install-WindowsUpdate -AcceptAll -Install -AutoReboot | Out-File "c:\logs\$(get-date -f yyyy-MM-dd)-WindowsUpdate.log" -force
KB 번호를 지정하여 특정 업데이트 패키지만 설치할 수도 있습니다:
Get-WindowsUpdate -KBArticleID KB2267602, KB4533002 -Install

이 경우 각 업데이트의 설치 여부를 수동으로 확인해야 합니다.
설치 목록에서 특정 업데이트를 제외하려면 다음 명령을 실행합니다:
Install-WindowsUpdate -NotCategory "Drivers" -NotTitle OneDrive -NotKBArticleID KB4011670 -AcceptAll -IgnoreReboot
PowerShell로 원격 컴퓨터에 Windows 업데이트 설치하기
PSWindowsUpdate 모듈을 사용하면 여러 워크스테이션이나 서버에 동시에 원격으로 업데이트를 설치할 수 있습니다(대상 컴퓨터에 PSWindowsUpdate가 설치/가져오기 되어 있어야 함). 관리자가 원격 Windows 호스트에 일일이 로그인하지 않고도 업데이트를 설치할 수 있어 매우 편리합니다. 단, 원격 컴퓨터에서 WinRM이 활성화 및 구성되어 있어야 합니다(수동 또는 GPO를 통해).
PSWindowsUpdate 모듈의 거의 모든 cmdlet은 –Computername 속성을 통해 원격 컴퓨터의 Windows 업데이트를 관리하고 설치할 수 있습니다.
원격 컴퓨터에 PSWindowsUpdate 모듈을 설치하고, Windows Defender 방화벽에서 dllhost.exe 프로세스로의 동적 RPC 포트 접근을 허용합니다. Invoke-Command cmdlet을 사용하여 원격 컴퓨터에 PSWindowsUpdate 모듈을 구성할 수 있습니다:
$Targets = "lon-fs02", "lon-db01"
Invoke-Command -ComputerName $Target -ScriptBlock {Set-ExecutionPolicy RemoteSigned -force }
Invoke-Command -ComputerName $Target -ScriptBlock {Import-Module PSWindowsUpdate; Enable-WURemoting}
PSWindowsUpdate 모듈은 AD 도메인에 가입된 컴퓨터와 워크그룹 환경의 컴퓨터 모두에서 원격으로 Windows 업데이트를 관리하는 데 사용할 수 있습니다(워크그룹 환경에서는 PowerShell Remoting 구성이 필요합니다).
원격 컴퓨터의 업데이트를 관리하려면 winrm 신뢰할 수 있는 호스트 목록에 호스트 이름을 추가하거나 HTTPS를 통해 PowerShell Remoting(WinRM)을 구성해야 합니다:
winrm set winrm/config/client '@{TrustedHosts="server1,server2,…"}'
또는 PowerShell로 다음과 같이 설정합니다:
Set-Item wsman:\localhost\client\TrustedHosts -Value server1 -Force
다음 명령은 세 개의 원격 Windows 호스트에 사용 가능한 모든 업데이트를 설치합니다:
$ServerNames = "server1, server2, server3"
Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate -AcceptAll | Out-File C:\Windows\PSWindowsUpdate.log } -RunNow -Confirm:$false -Verbose -ErrorAction Ignore
Invoke-WUJob cmdlet(이전 이름은 Invoke-WUInstall)은 원격 컴퓨터에 로컬 SYSTEM 계정으로 실행되는 스케줄러 작업을 생성합니다.
Windows 업데이트 설치 시간을 정확하게 지정할 수도 있습니다:
Invoke-WUJob -ComputerName $ServerNames -Script {ipmo PSWindowsUpdate; Install-WindowsUpdate –AcceptAll -AutoReboot | Out-File C:\Windows\PSWindowsUpdate.log } -Confirm:$false -TriggerDate (Get-Date -Hour 22 -Minute 0 -Second 0)
Get-WUJob을 사용하여 업데이트 설치 작업의 진행 상태를 확인할 수 있습니다:
Get-WUJob -ComputerName $ServerNames
명령이 빈 목록을 반환하면 모든 컴퓨터에서 업데이트 설치 작업이 완료된 것입니다.
원격 컴퓨터에 업데이트를 설치하고 관리자에게 이메일 보고서를 전송할 수도 있습니다:
Install-WindowsUpdate -ComputerName nysrv1 -MicrosoftUpdate -AcceptAll - IgnoreReboot -SendReport –PSWUSettings @{SmtpServer="smtp.woshub.com";From="update_alert@woshub.com";To="wsus_admin@woshub.com";Port=25} -Verbose
PowerShell로 Windows 업데이트 기록 확인하기 (Get-WUHistory)
Get-WUHistory cmdlet을 사용하면 컴퓨터에 자동 또는 수동으로 설치된 업데이트 목록을 조회할 수 있습니다.

특정 업데이트의 설치 날짜 정보를 확인하려면 다음 명령을 사용합니다:
Get-WUHistory| Where-Object {$_.Title -match "KB4517389"} | Select-Object *|ft

여러 원격 컴퓨터에 특정 업데이트가 설치되었는지 확인하려면 다음 PowerShell 코드를 사용합니다:
"server1","server2" | Get-WUHistory| Where-Object {$_.Title -match "KB4011634"} | Select-Object *|ft
업데이트 설치 후 컴퓨터 재시작이 필요한지(pending reboot) 확인합니다:
Get-WURebootStatus –ComputerName WKS21TJS

RebootRequired와 RebootScheduled 속성 값을 확인하세요.
Get-ADComputer cmdlet(PowerShell용 Active Directory 모듈)을 사용하면 도메인 내 모든 컴퓨터의 마지막 업데이트 설치 날짜 보고서를 생성할 수 있습니다:
$Computers=Get-ADComputer -Filter {enabled -eq "true" -and OperatingSystem -Like '*Windows*' }
Foreach ($Computer in $Computers)
{
Get-WULastResults -ComputerName $Computer.Name|select ComputerName, LastSearchSuccessDate, LastInstallationSuccessDate
}
같은 방식으로 60일 이상 업데이트를 설치하지 않은 컴퓨터를 찾아 Out-GridView 대화형 테이블로 결과를 표시할 수 있습니다:
$result=@()
Foreach ($Computer in $Computers) {
$result+= Get-WULastResults -ComputerName $Computer.Name
}
$result| Where-Object { $_.LastInstallationSuccessDate -lt ((Get-Date).AddDays(-60)) }| Out-GridView
PowerShell로 Windows 업데이트 제거하기 (Remove-WindowsUpdate)
Remove-WindowsUpdate cmdlet을 사용하면 PowerShell로 업데이트를 올바르게 제거할 수 있습니다. KBArticleID 매개변수에 KB 번호만 지정하면 됩니다. 자동 재부팅을 지연시키려면 –NoRestart 옵션을 추가합니다:
Remove-WindowsUpdate -KBArticleID KB4489873 -NoRestart
PowerShell로 Windows 업데이트 숨기는 방법
특정 업데이트를 숨기면 Windows Update 서비스가 해당 업데이트를 더 이상 설치하지 않습니다(주로 드라이버 업데이트를 숨길 때 유용합니다). 예를 들어 KB4489873과 KB4489243 업데이트를 숨기려면 다음 명령을 실행합니다:
$HideList = "KB4489873", "KB4489243"
Get-WindowsUpdate -KBArticleID $HideList –Hide

이후 Get-WUlist 명령으로 업데이트를 검색하면 숨겨진 업데이트는 설치 가능한 업데이트 목록에 표시되지 않습니다.
이 컴퓨터에서 숨겨진 업데이트 목록은 다음 명령으로 확인할 수 있습니다:
Get-WindowsUpdate –IsHidden
숨겨진 업데이트의 Status 열에 H(Hidden) 속성이 표시되는 것을 확인할 수 있습니다.

숨긴 업데이트를 다시 표시하려면 다음 명령을 실행합니다:
Get-WindowsUpdate -KBArticleID $HideList -WithHidden -Hide:$false
또는:
Show-WindowsUpdate -KBArticleID $HideList
PowerShell 콘솔 사용이 익숙하지 않은 분들은 Windows 10/11 및 Windows Server 2022/2019의 업데이트를 관리할 수 있는 그래픽 도구인 Windows Update MiniTool을 사용해 보시기 바랍니다.