명령 줄에서 Windows Update를 설치하는 방법


17

명령 줄에서 Windows 업데이트를 설치할 수 있습니까? 그래픽 업데이트 도구는 Windows 7에서 제대로 작동하지 않는 것 같습니다. 때때로, 때로는 그렇지 않습니다 ... 내 문제는 세부 정보 목록을 보려면 클릭하면 업데이트를 볼 수 없다는 것입니다. 따라서 기본적으로 선택 해제되어 있지 않은 업데이트가 있으면 설치할 수 없습니다 ...

그렇다면 다른 방법으로 설치할 수 있습니까?

답변:


12

Windows 7에 대해서는 잘 모르지만 XP / Vista에서는 다음 명령을 실행하여 업데이트를 감지하고 다운로드 할 수 있습니다.

wuauclt /detectnow /reportnow

작동하는 데 문제가 있으면 WSUS Wiki를 확인하십시오 .

그렇지 않으면 원하는 특정 업데이트가있는 경우 Microsoft 웹 사이트에서 다운로드하십시오. 설치하는 데 방해가되는 문제가있는 경우 Windows Update 로그를 처리하기가 가장 좋은 방법입니다.


1
더 이상 링크가 유효하지 않다고 생각합니다.
Natalie Adams

Windows 8.1 또는 Windows Server 2012에서는 작동하지 않습니다.
nu everest

제공 한 명령은 업데이트를 확인하고 WSUS 서버에 업데이트 상태를보고합니다. 업데이트를 승인, 다운로드 또는 설치하지 않습니다. 사용 가능한 업데이트를 강제로 설치하려면 / updatenow 매개 변수를 추가해야합니다.
duct_tape_coder

또한, Win10 / 2016에서 wuauclt 명령은 usoclient를 위해 더 이상 사용되지 않습니다. omgdebugging.com/2017/10/09/…
duct_tape_coder

4

스크립트를 사용하여 업데이트를 동 기적으로 확인, 다운로드 및 설치할 수 있습니다. 나는 종종 Windows Core 서버의 수동 패치를 위해이 vbscript 의 수정 된 버전 을 사용합니다.

Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

WScript.Echo "List of applicable items on the machine:"

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Creating collection of updates to download:"

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")

For I = 0 to searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    addThisUpdate = false
    If update.InstallationBehavior.CanRequestUserInput = true Then
        WScript.Echo I + 1 & "> skipping: " & update.Title & _
        " because it requires user input"
    Else
        If update.EulaAccepted = false Then
            WScript.Echo I + 1 & "> note: " & update.Title & _
            " has a license agreement that must be accepted:"
            WScript.Echo update.EulaText
            WScript.Echo "Do you accept this license agreement? (Y/N)"
            strInput = WScript.StdIn.Readline
            WScript.Echo 
            If (strInput = "Y" or strInput = "y") Then
                update.AcceptEula()
                addThisUpdate = true
            Else
                WScript.Echo I + 1 & "> skipping: " & update.Title & _
                " because the license agreement was declined"
            End If
        Else
            addThisUpdate = true
        End If
    End If
    If addThisUpdate = true Then
        WScript.Echo I + 1 & "> adding: " & update.Title 
        updatesToDownload.Add(update)
    End If
Next

If updatesToDownload.Count = 0 Then
    WScript.Echo "All applicable updates were skipped."
    WScript.Quit
End If

WScript.Echo vbCRLF & "Downloading updates..."

Set downloader = updateSession.CreateUpdateDownloader() 
downloader.Updates = updatesToDownload
downloader.Download()

Set updatesToInstall = CreateObject("Microsoft.Update.UpdateColl")

rebootMayBeRequired = false

WScript.Echo vbCRLF & "Successfully downloaded updates:"

For I = 0 To searchResult.Updates.Count-1
    set update = searchResult.Updates.Item(I)
    If update.IsDownloaded = true Then
        WScript.Echo I + 1 & "> " & update.Title 
        updatesToInstall.Add(update) 
        If update.InstallationBehavior.RebootBehavior > 0 Then
            rebootMayBeRequired = true
        End If
    End If
Next

If updatesToInstall.Count = 0 Then
    WScript.Echo "No updates were successfully downloaded."
    WScript.Quit
End If

If rebootMayBeRequired = true Then
    WScript.Echo vbCRLF & "These updates may require a reboot."
End If

WScript.Echo  vbCRLF & "Would you like to install updates now? (Y/N)"
strInput = WScript.StdIn.Readline
WScript.Echo 

If (strInput = "Y" or strInput = "y") Then
    WScript.Echo "Installing updates..."
    Set installer = updateSession.CreateUpdateInstaller()
    installer.Updates = updatesToInstall
    Set installationResult = installer.Install()

    'Output results of install
    WScript.Echo "Installation Result: " & _
    installationResult.ResultCode 
    WScript.Echo "Reboot Required: " & _ 
    installationResult.RebootRequired & vbCRLF 
    WScript.Echo "Listing of updates installed " & _
    "and individual installation results:" 

    For I = 0 to updatesToInstall.Count - 1
        WScript.Echo I + 1 & "> " & _
        updatesToInstall.Item(i).Title & _
        ": " & installationResult.GetUpdateResult(i).ResultCode   
    Next
End If

그것은 매력적으로 작동하는 것 같지만 물론 Windows 7에서는 테스트하지 않았습니다. 필요한 경우 특정 업데이트를 대상으로하는 다른 기사에 대한 링크도 있습니다.

비슷한 경험을 제공하는 Powershell 모듈 도 있습니다.

간략히 살펴본 후 업데이트 API를 사용하지만 더 많은 옵션 이있는 타사 응용 프로그램 도 찾았습니다 (타사 코드를 신뢰해야 함).


2

명령 줄에서 Windows 업데이트 :

www.sysadminsoftware.com/udc.html

도구 (Updates Deployment Commander)는 원하는 것을 수행 할 수 있습니다. 특정 패치를 피하고, 특정 업데이트를 대상으로하고, 완료 후 N 분 후에 재부팅하고, CSV로 보고서를 작성하는 등의 매개 변수를 전달할 수 있습니다. GUI 유틸리티도 함께 제공됩니다.


2

새로 설치 한 후 especailly Windows 운영 체제를 패치해야하는 경우 Offline Updater를 자세히 살펴보십시오 .

스크립트를 사용하여 제안하는 모든 패치 (Win2000, Win XP, Win 2003, Vista, Win2008, Win2012 32 및 64 비트), 다국어, 서비스 팩, .NET 프레임 워크 및 Office 패치 (XP, 2000)를 다운로드합니다. , 2003, 2007).

모두 다운로드 한 후에는 화요일마다 모든 패치를 업데이트하고 변경 사항 만 적용하면됩니다. 그것은 catalouges를 얻고 매일 더 길어지고 있지만 (현재 OS / Office rev에 따라 많은 megs).

로컬 컴퓨터에 파일이 다운로드되면 CD / DVD 이미지를 작성하는 스크립트가 있습니다 (원하는 경우 OS 당 DVD 이미지가 자동으로 수행됨).

내가하는 일은 쓰기 방지 탭을 따르는 SD 카드 리더에서 4GB SD 메모리 카드를 사용하는 것입니다. 나는 2GB 카드를 사용했지만 Win XP와 거의 대부분의 Office 빌드에 거의 맞지 않아 4GB 카드로 옮겼습니다.

따라서 컴퓨터 문제를 해결할 때 이전에 쓸 수있는이 장치를 신뢰할 수없는 바이러스 감염된 컴퓨터에 삽입하는 것이 좋습니다.

따라서 첫 번째 단계로 최신 패치를 적용 할 수 있습니다.

자동 실행을 사용하거나 장치에서 실행 파일 (키, 외부 HD, CD, DVD)을 실행하면 로컬 컴퓨터에서 Windows Update 서비스를 사용하여 모든 업데이트를 적용하는 스크립트를 시작하지만 대신 다운로드를 위해 전선을 가로 질러 로컬 사본을 사용합니다.

따라서 WinXP 시스템을 최신 SP 및 패치로 업데이트하는 데 여전히 1 시간 이상이 소요될 수 있지만 네트워크 트래픽은 전혀 없으며 이더넷 케이블을 완전히 분리 한 상태에서 수행 할 수 있습니다.

놀랍도록 유용한 도구!

패치 CD를 미리 제작 한 AutoUpdate 사용자가 CD 이미지를 배포 한 것과 같이 Microsoft에 위배되지 않아야합니다. 이 도구는 스크립트를 업데이트하므로 라이센스가있는 Windows 워크 스테이션의 모든 패치를 가져와야합니다.


1

현재 duffbeer703답변 에 의견을 추가 할 수 없으므로 별도의 답변으로 여기에 있습니다.

인터넷 아카이브에 보관 된 WSUSwiki 링크의 마지막 "좋은"버전은 다음과 같습니다 . 원래 답변에 제공된 옵션은이 FAQ 항목에 설명되어 있습니다.


댓글 달기 권한을 얻기 위해 "평소의 점수"를 얻는 데 무엇이 필요한지 알고 있습니까? 일부 (관련) 수정 사항을 제안하십시오. 그들이 승인되면 당신은 그들 각각에 대해 +2 담당자를 얻습니다 ... 시도해보십시오!
Pierre.Vriens

-2

Windows Update가 제대로 작동하려면 ActiveX 및 Internet Explorer와의 다른 통합이 필요합니다.

Windows 7은 아직 릴리스 후보가 아니기 때문에 이러한 종류의 버그가 예상됩니다.

MSDN의 구성원 인 경우 개발자 팀에있는 특정 버그를 제출하는 것이 좋습니다.


그래, 알아 MSDN에 이미 버그를 제출했습니다. 수정 될 때까지 다른 방법을 찾기 만하면됩니다 =)
Svish
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.