Computer >> 컴퓨터 >  >> 체계 >> Windows Server

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

PSWindowsUpdate를 사용할 수 있습니다. 명령줄에서 Windows 업데이트를 관리하는 PowerShell 모듈. PSWindowsUpdate 모듈은 Windows에 내장되어 있지 않으며 PowerShell 갤러리 리포지토리에서 설치할 수 있습니다. PSWindowsUpdate를 사용하면 관리자가 Windows 서버 및 워크스테이션에서 업데이트를 원격으로 확인, 설치, 제거 및 숨길 수 있습니다. PSWindowsUpdate 모듈은 Windows Server Core 또는 Hyper-V Server(GUI가 없음)에서 업데이트를 관리하고 감사 모드에서 Windows 이미지를 구성할 때 특히 유용합니다.

PSWindowsUpdate 모듈 설치

단일 명령으로 PackageManagement를 사용하여 온라인 리포지토리(PSGallery)에서 Windows 10/11 및 Windows Server 2022/2019/2016에 PSWindowsUpdate 모듈을 설치할 수 있습니다.

Install-Module -Name PSWindowsUpdate -Force

설치가 완료되면 패키지를 확인해야 합니다.

Get-Package -Name PSWindowsUpdate

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

이전 버전의 Windows 2012R2/Windows 8.1 이하에 PowerShell 모듈을 설치할 때 다음 오류가 표시될 수 있습니다.

설치 모듈:URI에서 다운로드할 수 없습니다. 사용 가능한 공급자 목록을 다운로드할 수 없습니다. 인터넷 연결을 확인하세요.

모듈을 설치하려면 연결에 TLS 1.2 프로토콜을 사용해야 합니다. 다음 명령을 사용하여 현재 PowerShell 세션에 대해 활성화합니다.

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

이전 Windows 버전(Windows 7/8.1/Windows Server 2008 R2/2012 R2)이 있거나 인터넷에 직접 액세스할 수 없는 경우 PSWindowsUpdate를 수동으로 설치할 수 있습니다("PowerShell 모듈을 오프라인으로 설치하는 방법" 가이드 확인). .

  1. PSWindowsUpdate 모듈을 온라인 컴퓨터에 다운로드:Save-Module –Name PSWindowsUpdate –Path C:\ps\;
  2. 대상 컴퓨터의 다음 폴더에 모듈을 복사합니다. %WINDIR%\System32\WindowsPowerShell\v1.0\Modules; PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리
  3. PowerShell 스크립트 실행 정책 구성:Set-ExecutionPolicy –ExecutionPolicy RemoteSigned -force
  4. 이제 모듈을 PowerShell 세션으로 가져올 수 있습니다. Import-Module PSWindowsUpdate
참고 . Windows 7/Windows Server 2008 R2에서 PSWindowsUpdate 모듈을 가져올 때 다음 오류가 나타날 수 있습니다. "Unblock-File"이라는 용어는 cmdlet 이름으로 인식되지 않습니다. . 그 이유는 모듈이 PowerShell 3.0에서만 등장한 일부 기능을 사용하기 때문입니다. 이러한 기능을 사용하려면 PowerShell 버전을 업데이트하거나 | Unblock-File PSWindowsUpdate.psm1 파일에서 수동으로 줄을 만듭니다.

컴퓨터에 PSWindowsUpdate 모듈을 설치한 후 Update-WUModule을 사용하여 다른 컴퓨터나 서버에 원격으로 설치할 수 있습니다. cmdlet. 예를 들어, PSWindowsUpdate 모듈을 컴퓨터에서 두 개의 원격 호스트로 복사하려면 다음 명령을 실행합니다(WinRM 프로토콜을 통해 원격 서버에 액세스해야 함).

$Targets = "lon-fs02", "lon-db01"
Update-WUModule -ComputerName $Targets –Local

다른 컴퓨터에서 추가로 가져올 수 있도록 PoSh 모듈을 공유 네트워크 폴더에 저장(내보내기)하려면 다음을 실행하십시오.

Save-Module -Name PSWindowsUpdate –Path \\lon-fs02\psmodules\

PSWindowsUpdate Cmdlet 목록

다음과 같이 PSWindowsUpdate 모듈에서 사용 가능한 cmdlet 목록을 표시할 수 있습니다.

get-command -module PSWindowsUpdate

모듈 명령의 사용법을 간략하게 설명하겠습니다.

  • WUJob 지우기 – Get-WUJob을 사용하여 작업 스케줄러에서 WUJob을 지웁니다.
  • 다운로드-WindowsUpdate (별칭 Get-WindowsUpdate –Download ) — 업데이트 목록을 가져와 다운로드합니다.
  • Get-WUInstall, Install-WindowsUpdate (Get-WindowsUpdate –Install의 별칭 ) – Windows 업데이트 설치
  • WindowsUpdate 숨기기 (Get-WindowsUpdate -Hide:$false의 별칭 ) – 업데이트 숨기기;
  • 제거-WindowsUpdate – Remove-WindowsUpdate를 사용하여 업데이트를 제거합니다.
  • WUServiceManager 추가 – 컴퓨터에 업데이트 서버(Windows Update Service Manager)를 등록합니다.
  • WUR모팅 사용 — Windows Defender 방화벽 규칙을 활성화하여 PSWindowsUpdate cmdlet의 원격 사용을 허용합니다.
  • Get-WindowsUpdate (Get-WUList) — 지정된 기준과 일치하는 업데이트 목록을 표시하고 업데이트를 찾아 설치할 수 있습니다. PSWindowsUpdate 모듈의 기본 cmdlet입니다. WSUS 서버 또는 Microsoft 업데이트에서 업데이트를 다운로드하고 설치할 수 있습니다. 업데이트 카테고리, 특정 업데이트를 선택하고 업데이트를 설치할 때 컴퓨터 다시 시작 규칙을 설정할 수 있습니다.
  • WUApiVersion 가져오기 – 컴퓨터에서 Windows 업데이트 에이전트 버전을 가져옵니다.
  • Get-WUHistory – 설치된 업데이트 목록 표시(업데이트 기록),
  • Get-WUInstallerStatus — Windows Installer 서비스 상태 확인
  • Get-WUJob – 작업 스케줄러에서 WUJob 업데이트 작업을 확인합니다.
  • Get-WULastResults — 업데이트의 마지막 검색 및 설치 날짜(LastSearchSuccessDateLastInstallationSuccessDate );
  • Get-WURebootStatus — 특정 업데이트를 적용하기 위해 재부팅이 필요한지 여부를 확인할 수 있습니다.
  • Get-WUServiceManager – 업데이트 소스 나열
  • Get-WU설정 – Windows 업데이트 클라이언트 설정 가져오기
  • WUJob 호출 – 작업 스케줄러에서 원격으로 WUJobs 작업을 호출하여 PSWindowsUpdate 명령을 즉시 실행합니다.
  • 제거-WindowsUpdate – KB ID로 업데이트를 제거할 수 있습니다.
  • WUServiceManager 제거 – Windows 업데이트 서비스 관리자 비활성화
  • PSWU설정 설정 – PSWindowsUpdate 모듈 설정을 XML 파일에 저장
  • WU설정 설정 – Windows 업데이트 클라이언트 설정 구성
  • 업데이트-WUM 모듈 – PSWindowsUpdate 모듈 업데이트(현재 컴퓨터에서 복사하거나 PSGallery에서 업데이트하여 원격 컴퓨터의 모듈을 업데이트할 수 있음)
  • Reset-WUComponents 컴퓨터의 Windows Update 에이전트를 기본 상태로 재설정할 수 있습니다.

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

현재 Windows Update 클라이언트 설정을 확인하려면 다음 명령을 실행하십시오.

Get-WUSettings

ComputerName :WKS5S2N39S2WUServer :https://MN-WSUS:8530WUStatusServer :https://MN-WSUS:8530AcceptTrustedPublisherCerts :1ElevateNonAdmins :1DoNotConnectToWindowsUpdateInternetLocations :1DoNotConnectToWindowsUpdateInternetLocations 설치 :1DoNotConnectToWindowsUpdateInternetLocations :1TargetGroupEnabled :1Target0 설치 3UseWUServer :1AutoInstallMinorUpdates :0AlwaysAutoRebootAtScheduledTime :0DetectionFrequencyEnabled :1DetectionFrequency :4

이 예에서 컴퓨터의 Windows Update 에이전트는 로컬 WSUS 서버에서 업데이트를 수신하도록 GPO로 구성됩니다.

Reset-WUComponents -Verbose cmdlet을 사용하면 모든 Windows 업데이트 에이전트 설정을 재설정하고, 라이브러리를 다시 등록하고, wususerv 기본 상태로 서비스합니다.

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

PowerShell을 사용하여 Windows 업데이트 검색 및 다운로드

Get-WindowsUpdate를 사용하여 업데이트 서버의 현재 컴퓨터에 사용할 수 있는 업데이트를 나열할 수 있습니다. 또는 Get-WUList 명령.

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

원격 컴퓨터에서 사용 가능한 업데이트 목록을 확인하려면 다음 명령을 실행하십시오.

Get-WUList –ComputerName server2

Windows에서 업데이트를 수신해야 하는 위치를 확인할 수 있습니다. 다음 명령을 실행하십시오.

Get-WUServiceManager

ServiceID IsManaged IsDefault 이름--------- --------- --------- ----8b24b027-1dee-babb-9a95-3517dfb9c552 False False False DCat Falsealsepred855e8a7c-ecb4-4ca3-b045-1dfa50104289 False False Windows 스토어(DCat Prod)3da21691-e39d-4da6-8a4b-b43877bcb1b7 True True Windows Server 업데이트 서비스4-82f4 

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

보시다시피 컴퓨터는 로컬 WSUS 서버(Windows Server Update Service =True ). 이 경우 컴퓨터에 대해 승인된 업데이트 목록이 표시됩니다.

인터넷의 Microsoft 업데이트 서버에 대해 컴퓨터를 검색하려면(Windows 업데이트 외에도 이러한 서버에는 Office 및 기타 Microsoft 제품 업데이트가 포함되어 있음) 다음 명령을 실행하십시오.

Get-WUlist -MicrosoftUpdate

다음과 같은 경고가 표시됩니다.

Get-WUlist :서비스 Windows 업데이트를 컴퓨터에서 찾을 수 없습니다. Get-WUServiceManager를 사용하여 등록된 서비스를 받으세요.

Microsoft Update에서 검색을 허용하려면 다음 명령을 실행하십시오.

Add-WUServiceManager -ServiceID "7971f918-a847-4430-9279-4a52d1efe18d" -AddServiceFlag 7

이제 Microsoft Update에 대해 스캔할 수 있습니다. 이 경우 Microsoft Visual C ++ 2008 및 Microsoft Silverlight에 대한 추가 업데이트가 발견되었습니다.

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

컴퓨터의 Windows Update Agent 버전을 확인하려면 다음 명령을 실행하십시오.

Get-WUApiVersion

컴퓨터 이름 PSWindowsUpdate PSWUModuleDll ApiVersion WuapiDllVersion------------ --------------- ------------- -- -------- ---------------데스크탑-J... 2.1.1.2 2.2.0.2 8.0 10.0.19041.1320

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

컴퓨터에서 받은 업데이트 목록에서 특정 제품이나 KB를 제거하려면 다음을 수행하여 제외할 수 있습니다.

  • 범주(-NotCategory );
  • 제목(-NotCategory );
  • 업데이트 번호(-NotKBArticleID ).

예를 들어 목록에서 OneDrive, 드라이버 업데이트 및 특정 KB를 제외하겠습니다.

Get-WUlist -NotCategory "Drivers" -NotTitle "OneDrive" -NotKBArticleID KB4489873

PowerShell을 사용하여 Windows 업데이트 설치(Install-WindowsUpdate)

Windows 업데이트 서버(로컬 WSUS 대신)에서 Windows 장치에 대해 사용 가능한 모든 업데이트를 자동으로 다운로드하고 설치하려면 다음 명령을 실행하십시오.

Install-WindowsUpdate -MicrosoftUpdate -AcceptAll -AutoReboot

모두 수락 매개변수는 모든 업데이트 패키지의 설치를 허용하고 AutoReboot 업데이트가 설치된 후 Windows가 자동으로 다시 시작되도록 합니다.

다음 옵션을 사용할 수도 있습니다.

  • 재부팅 무시 – 자동 재부팅 비활성화
  • 재부팅 일정 – 컴퓨터를 다시 시작할 정확한 시간을 설정합니다.

업데이트 설치 내역을 로그 파일에 저장할 수 있습니다(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

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

이 경우 각 업데이트의 설치를 수동으로 확인해야 합니다.

설치 목록에서 특정 업데이트를 제외하려면 다음 명령을 실행하십시오.

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

다음 명령은 3개의 원격 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을 사용하면 이전에 컴퓨터에 설치된 업데이트 목록을 자동 또는 수동으로 가져올 수 있습니다.

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

특정 업데이트의 설치 날짜에 대한 정보를 얻을 수 있습니다.

Get-WUHistory| Where-Object {$_.Title -match "KB4517389"} | Select-Object *|ft

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

특정 업데이트가 여러 원격 컴퓨터에 설치되었는지 확인하려면 다음 PowerShell 코드를 사용할 수 있습니다.

"server1","server2" | Get-WUHistory| Where-Object {$_.Title -match "KB4011634"} | Select-Object *|ft

업데이트를 설치한 후 컴퓨터를 다시 시작해야 하는지 확인(재부팅 대기 중):

Get-WURebootStatus –ComputerName WKS21TJS

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

RebootRequired 값 확인 및 재부팅 예정 속성.

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로 업데이트를 올바르게 제거합니다. KB ArticleID 매개변수의 인수로 KB 번호를 지정하기만 하면 됩니다. 자동 컴퓨터 다시 시작을 지연하려면 –NoRestart 옵션을 추가하십시오.

Remove-WindowsUpdate -KBArticleID KB4489873 -NoRestart

PowerShell을 사용하여 Windows 업데이트를 숨기는 방법

특정 업데이트를 숨겨 컴퓨터의 Windows 업데이트 서비스에서 설치하지 않도록 할 수 있습니다(대부분의 경우 드라이버 업데이트를 숨겨야 함). 예를 들어, KB4489873 및 KB4489243 업데이트를 숨기려면 다음 명령을 실행합니다.
$HideList = "KB4489873", "KB4489243"
Get-WindowsUpdate -KBArticleID $HideList –Hide

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

이제 다음에 Get-WUlist 명령을 사용하여 업데이트를 검색할 때 숨겨진 업데이트가 설치 가능한 업데이트 목록에 표시되지 않습니다.

이 컴퓨터에 숨겨진 업데이트 목록을 표시하는 방법은 다음과 같습니다.

Get-WindowsUpdate –IsHidden

H (숨김) 속성이 숨겨진 업데이트의 상태 열에 나타납니다.

PSWindowsUpdate PowerShell 모듈로 Windows 업데이트 관리

일부 업데이트를 숨기려면 다음 명령을 실행하십시오.

Get-WindowsUpdate -KBArticleID $HideList -WithHidden -Hide:$false

또는:

Show-WindowsUpdate -KBArticleID $HideList

PowerShell 콘솔이 불편하신 분들을 위해 그래픽 Windows Update MiniTool을 추천합니다. Windows 10/11 및 Windows Server 2022/2019에서 업데이트를 관리합니다.