소프트웨어 설치 작업

Windows Installer와 함께 설치된 애플리케이션은 WMI의 쿼리를 통해 찾을 수 있지만 모든 애플리케이션에서 Windows Installer를 사용하는 것은 아닙니다. 다른 도구와 함께 설치된 애플리케이션을 찾기 위한 특정 기술은 설치 관리자 소프트웨어에 따라 달라집니다.

예를 들어, 파일을 폴더에 복사하여 컴퓨터에 설치하는 애플리케이션은 일반적으로 여기에 설명된 기술을 사용하여 관리할 수 없습니다. 이러한 애플리케이션은 파일 및 폴더 작업 섹션에 설명된 기술을 사용하여 파일 및 폴더로 관리할 수 있습니다.

설치 관리자 패키지를 사용하여 설치된 소프트웨어의 경우 Win32Reg_AddRemovePrograms 또는 Win32_Product 클래스를 사용하여 Windows Installer를 찾을 수 있습니다. 그러나 이 두 가지 모두 문제가 있습니다. Win32Reg_AddRemovePrograms SCCM(System Center Configuration Manager)을 사용하는 경우에만 사용할 수 있습니다. 그리고 Win32_Product 클래스는 느릴 수 있으며 부작용이 있습니다.

주의

Win32_Product 클래스는 최적화된 쿼리는 아닙니다. 와일드카드 필터를 사용하는 쿼리로 인해 WMI는 MSI 공급자를 사용하여 설치된 모든 제품을 열거한 다음 전체 목록을 순차적으로 구문 분석하여 필터를 처리합니다. 또한 설치된 패키지의 일관성 검사 시작하여 설치를 확인하고 복구합니다. 유효성 검사는 느린 프로세스이며 이벤트 로그에 오류가 발생할 수 있습니다. 자세한 내용은 974524 KB 문서를 참조하세요.

이 문서에서는 설치된 소프트웨어를 찾기 위한 대체 방법을 제공합니다.

설치된 소프트웨어를 찾기 위해 제거 레지스트리 키 쿼리

대부분의 표준 애플리케이션은 Windows에 제거 프로그램을 등록하기 때문에 Windows 레지스트리에서 이를 찾아 로컬로 작업할 수 있습니다. 시스템에서 모든 애플리케이션을 찾을 수 있는 확실한 방법은 없습니다. 그러나 다음 레지스트리 키에서 프로그램 추가 또는 제거에 목록이 표시된 모든 프로그램을 찾을 수 있습니다.

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall.

레지스트리 키 수를 계산하여 설치된 애플리케이션 수를 찾을 수 있습니다.

$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall'
(Get-ChildItem -Path $UninstallPath).Count
459

다양한 기술을 사용하여 이 애플리케이션 목록을 추가로 검색할 수 있습니다. 레지스트리 키의 레지스트리 값 값을 아래 Uninstall의 레지스트리 키에 GetValue() 표시하려면 레지스트리 키의 메서드를 사용합니다. 메서드의 값은 레지스트리 항목의 이름입니다. 예를 들어 키에서 Uninstall 애플리케이션의 표시 이름을 찾으려면 다음 명령을 사용합니다.

Get-ChildItem -Path $UninstallPath |
    ForEach-Object -Process { $_.GetValue('DisplayName') } |
    Sort-Object

참고 항목

DisplayName 값이 고유하다는 보장은 없습니다.

다음 예제에서는 Win32Reg_AddRemovePrograms 클래스와 유사한 출력을 생성합니다.

Get-ChildItem $UninstallPath |
    ForEach-Object {
        $ProdID = ($_.Name -split '\\')[-1]
        Get-ItemProperty -Path "$UninstallPath\$ProdID" -ea SilentlyContinue |
        Select-Object -Property DisplayName, InstallDate, @{n='ProdID'; e={$ProdID}}, Publisher, DisplayVersion
} | Select-Object -First 3

간결하게 하기 위해 이 예제에서는 반환된 항목 수를 3개로 제한하는 데 사용합니다 Select-Object .

DisplayName    : 7-Zip 22.01 (x64)
InstallDate    :
ProdID         : 7-Zip
Publisher      : Igor Pavlov
DisplayVersion : 22.01

DisplayName    : AutoHotkey 1.1.33.10
InstallDate    :
ProdID         : AutoHotkey
Publisher      : Lexikos
DisplayVersion : 1.1.33.10

DisplayName    : Beyond Compare 4.4.6
InstallDate    : 20230310
ProdID         : BeyondCompare4_is1
Publisher      : Scooter Software
DisplayVersion : 4.4.6.27483