본문 바로가기
Windows/PowerShell

PowerShell | 설치된 프로그램 목록 보기(레지스트리, WmiObject ...)

by 지혜를 탐구하는 오딘 2022. 8. 8.
728x90
반응형

(관련 자료)

PowerShell | 설치된 프로그램 삭제, 프로그램 제거하기 (https://wednesday1304.tistory.com/entry/PowerShell-%EC%84%A4%EC%B9%98%EB%90%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%82%AD%EC%A0%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0)

 

 

1. PowerShell 로 설치된 프로그램 목록을 추출하는 이유

[설정 -->  앱 --> 앱 및 기능] 또는 [appwiz.cpl] 에 나오는 설치된 프로그램 목록을 추출하고 싶을 때에 사용한다.

 

설치된 프로그램 목록을 볼 수있다. 하지만 이는 데이터로 입력하기에는 적지 않은 아주 많은 노력이 필요하다. 텍스트가 복사 붙여넣기가 안 된다. 그래서 하나하나 입력해야한다. 이를 쉽게 텍스트로 추출해보자. (분명 컴퓨터도 어딘가 저장된 텍스트를 불러와서 보여준다!! Windows 이니까 레지스트리에 있겠지...

2. Get-WmiObject Win32_Product

Windows Installer(.msi .msp) 에 의해서 설치된 프로그램을 보여준다. 그래서 몇몇 프로그램이 없다. 대표적인 예로, Chrome, Firefox 가 없다!

Get-WmiObject Win32_Product `
	| Sort-Object -Property Name `		# Name 알파벳 순으로 정렬
	| Format-Table -Property Name, Vendor, Version, InstallDate

(-AutoSize, -Wrap 같은 경우는 필요하면 넣자. 참조(Format-Table)🔗 )

Win32_Product 에 어떤 Property 가 있는지는 MS문서🔗의 Syntax를 확인하자.

 

3. 레지스트리, Registry WOW6432Node 하위 Uninstall 의 값 (32 bit)

레지스트리 경로

HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall

하위의 모든 폴더(디렉토리) 내부의 DisplayName(REG_SZ) 레지스트리 값이 프로그램의 이름이다.

 

# 32 bit 프로그램 목록
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* `
    | Sort-Object -Property DisplayName `
    | Format-Table -Property DisplayName, Publisher, DisplayVersion

32bit로 설치된 프로그램 목록을 뽑을 수 있다.

 

 

4. 레지스트리, Registry Microsoft 하위 Uninstall 의 값 (64 bit)

위 32 bit 내용과 대동소이하다.

HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

위 경로의 폴더 내의 DisplayName 값을 보면 된다.

 

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* `
    | Sort-Object -Property DisplayName `
    | Format-Table -Property DisplayName, Publisher, DisplayVersion

 

5. 결론 | WOW6432Node + Microsoft 하위 Uninstall 의 값

(Win32_Product 는 사용하지 말자. msi 파일이 아닌 것들은 목록에 없으니까 말이다.)

32 bit로 설치된 프로그램 목록과 64 bit로 설치된 프로그램 목록을 합치면, 모든 프로그램 목록이 나올 것이다.

 

아래 코드를 사용하자

$Installed_Apps = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*    # 32 bit
$Installed_Apps += Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*     # 64 bit
 
# 설치된 프로그램 목록 보여주기
$Installed_Apps `
    | Sort-Object -Property DisplayName `
    | Format-Table -Property DisplayName, Publisher, DisplayVersion

 

 

 

 


(관련 자료)

PowerShell | 설치된 프로그램 삭제, 프로그램 제거하기 (https://wednesday1304.tistory.com/entry/PowerShell-%EC%84%A4%EC%B9%98%EB%90%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%82%AD%EC%A0%9C-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%82%AD%EC%A0%9C%ED%95%98%EA%B8%B0)

 

(참고 자료)

Win32_Product class (https://docs.microsoft.com/en-us/previous-versions/windows/desktop/msiprov/win32-product)

Windows Installer (https://en.wikipedia.org/wiki/Windows_Installer)

Format-Table (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/format-table?view=powershell-7.2)

 

 

 

728x90
반응형

댓글