it-swarm-ko.tech

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

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

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

17
Svish

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

wuauclt /detectnow /reportnow

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

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

12
duffbeer703

스크립트를 사용하여 업데이트를 동 기적으로 확인, 다운로드 및 설치할 수 있습니다. Windows Core 서버를 수동으로 패치하기 위해 수정 된 버전의 this 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도 사용하지만 더 많은 옵션이있는 이 타사 응용 프로그램 도 발견했습니다 (타사 코드를 신뢰해야 함).

4
Oskar Duveborn

명령 줄에서 Windows 업데이트 :

www.sysadminsoftware.com/udc.html

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

2
sysadmin

새로 설치 한 후 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 워크 스테이션의 모든 패치를 가져와야합니다.

2
geoffc

현재 answer by duffbeer7 에 주석을 추가 할 수 없으므로 여기에 별도의 답변이 있습니다.

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

1
Olaf Mandel