KB 패치가 설치되어 있는지 확인하기 위해 명령 줄을 통해 시스템을 쿼리하는 방법은 무엇입니까?


답변:


64

또한에 systeminfo도있다 wmic qfe

예:

wmic qfe get hotfixid | find "KB99999"
wmic qfe | find "KB99999"

도 있습니다 update.exe

또는 powershell에서 필요에 맞게 조정하십시오.

Get-WmiObject -query 'select * from win32_quickfixengineering' | foreach {$_.hotfixid}

3
과거에 내가 한 일. psexec를 사용하면 정말 쉽지만, 이상한 하이브리드 크랩 대신 stdout을 지정하지 않으면 find 명령이 작동하지 않을 수 있습니다 wmic. wmic /output:stdout qfe get hotfixid | find "KB99999".
songei2f

관리자 권한으로 실행해야합니까? 다른 곳에서 필요한 것 같습니다. 그래서 확인하고 싶습니다.
José

어떤 이유로 든 "find"를 사용하면 잘못된 형식 오류가 발생합니다. 작은 따옴표와 큰 따옴표를 시도했습니다.
Scott

@Scott (및 동일한 문제가 발생하는 다른 사람) : PS find cmdlet에는 매개 변수가 필요합니다. cmd에서 실행하는 find.exe는 그렇지 않습니다.
Mastacheata

17

PowerShell 2.0에는 지정된 핫픽스가 로컬 컴퓨터 나 원격 컴퓨터에 설치되어 있는지 쉽게 확인할 수있는 get-hotfix cmdlet이 포함되어 있습니다. 기본 구문의 예는 다음과 같습니다.

get-hotfix -id KB974332

이것은 v4에 없습니다
StingyJack

v5.1에는 확실히 존재합니다. 도움말 페이지는 다음과 같습니다. docs.microsoft.com/en-gb/powershell/module/…
Ant

6

CMD 창에서 "systeminfo"를 실행하면 설치된 패치를 포함하여 시스템에 대한 많은 통계가 표시됩니다.


3

다른 가능성 : KB 번호에 Grep % windir % \ Windowsupdate.log. 또는 reg.exe를 사용하여 해당 설치 키를 내보내십시오.


1
내 Windows에는와 함께 제공되지 않았습니다 grep. 을 사용해야 find합니다.
jscott

@ jscott : Windows에서 grep이 비표준이라는 것을 알고 있습니다 :-) Find 또는 findstr이 더 적합합니다. 그러나 여기서는 "grep"과 같이 grep이라는 단어를 사용하여 문자 그대로 "grep"을 의미하는 대신 프로세스를 나타냅니다. grep을 동사로 사용하는 것은 내가 일반적으로 사용하는 Unix 서클에서 매우 흔하기 때문에 Windows 사용자에게는 이상하게 보일지도 모릅니다.
Tonny

이것은 오래된 대답이지만 % windir % \ Windowsupdate.log는 지난 달의 업데이트 만 표시하는 것 같습니다. 아마도 그 시간이 지나면 롤오프되도록 구성 되었기 때문에 로그에서 찾지 못하면 시스템에 없음을 나타내지 않을 수도 있습니다.
glaucon

0
wmic qfe list /format:htable>C:\PatchList%Computername%.html

위의 명령은 html 형식으로 출력을 제공합니다.


0

누군가 PowerShell 프롬프트에서 wmic 사용에 대해 물었을 때 Select-String (또는 sls)을 사용하십시오.

wmic qfe get hotfixid | sls "KB99999"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.