WSUS에서 고급 자동 승인/거부 수행

소개



WSUS 4.0 이후는 조금 좋아지고 있지만, WSUS의 관리로 구성하는 자동 승인에서는 아키텍처에 의한 세분화나 세세한 기간 지정 등이 불가능하기 때문에 PowerShell을 이용한 고도의 조건에 의한 자동 승인/거부를 구성을 위한 비망록

참고 사이트



WSUS 유지 보수 가이드
불필요한 업데이트를 '거부됨'으로 설정하세요!

PowerShell로 WSUS에 연결



WSUS 서버에서 실행하는 경우.
Import-Module UpdateServices
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();

원격 WSUS 서버에 연결하는 경우.
Import-Module UpdateServices
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer([サーバーアドレス], [SSLの有無($true/$false)], [ポート番号(デフォルトは8530)]);

업데이트 얻기


$allUpdates = $wsus.GetUpdates()

검색된 업데이트의 요소 목록(발췌)




요소
설명


Title
업데이트 이름

LegacyName
업데이트의 레거시 이름

Description
업데이트 설명

KnowledgebaseArticles
문서 번호

UpdateClassificationTitle
분류

ProductTitles
대상 제품

ProductFamilyTitles
대상 제품군

CreationDate
출시일

ArrivalDate
착신일

IsApproved
승인 상태(True/False)

IsDeclined
거부 상태(True/False)

HasSupersededUpdates
다른 업데이트보다 우선하는 업데이트(True/False)

IsSuperseded
다른 업데이트보다 우선하는 업데이트(True/False)


우선순위, 우선순위 업데이트의 상태 목록 및 추출 조건




우선 아이콘
HasSupersededUpdates
IsSuperseded



True
거짓


True
True


거짓
True


승인 상태




상태
IsApproved
IsDeclined


미승인
거짓
거짓

승인됨
True
거짓

거부됨
거짓
True


LegacyName 요소를 이용한 아키텍처에 의한 추출 조건



32bit
$x86update = $allUpdates | where { $_.LegacyName -imatch "-x86-" }

64bit
$x64update = $allUpdates | where { $_.LegacyName -imatch "-x64-" }

ARM64
$arm64update = $allUpdates | where { $_.LegacyName -imatch "-arm64-" }

샘플 스크립트



거부됨을 제외한 대체된 가장 오래된 업데이트 거부※



※ 교체한 업데이트의 승인 상태는 불문이기 때문에 조금 난폭
실제의 운영 환경에 짜넣을 경우는 참고 사이트를 참고로 에러 핸들링이나 옮겨놓은 갱신 프로그램의 승인 상태의 판정등을 짜넣을 필요.
Import-Module UpdateServices
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$allUpdates = $wsus.GetUpdates()
$supersededUpdates = $allUpdates | where { $_.IsDeclined -eq $false -And $_.IsSuperseded -eq $true -And $_.HasSupersededUpdates -eq $true }
if (! $supersededUpdates.count -eq 0 ) {
    # 更新プログラムを拒否
    $supersededUpdates.Decline()
}

릴리스에서 3주가 경과한 비승인 Windows 10 버전 1809 64비트용 업데이트 승인


Import-Module UpdateServices
# 3週間前の日時を取得
$searchDate = (Get-Date).AddDays(-21)
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$allUpdates = $wsus.GetUpdates()
$approveUpdates = $allUpdates | where { $_.IsDeclined -eq $false -And $_.IsApproved -eq $false -And $_.LegacyName -imatch "-Windows10Rs5Client-" -And $_.LegacyName -imatch "-x64-" -And $_.CreationDate -le $searchDate }
if (! $approveUpdates.count -eq 0 ) {
    # 更新プログラムを承認
    $approveUpdates.Approve()
}



WSUS 자동 운영에서 정기적으로 수행해야 할 처리
1.SUSDB 색인 재구성
참고 사이트
WSUS DB 인덱스 재구성 절차 정보
2. 재구축 후 업데이트 승인, 불필요한 업데이트 거부
3. 거부 후 불필요한 콘텐츠 파일 삭제
참고 사이트
Invoke-WsusServerCleanup

마지막으로



WSUS의 자동 운용에 조금이라도 이 기사가 도움이 된다고 생각합니다.

좋은 웹페이지 즐겨찾기