1. PowerShell 로 설치된 프로그램 목록을 추출하는 이유
2. Get-WmiObject Win32_Product
3. 레지스트리, Registry WOW6432Node 하위 Uninstall 의 값
(관련 자료)
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)
'Windows > PowerShell' 카테고리의 다른 글
PowerShell | IP주소 변경하기(고정 IP, DHCP 로 변경 등) (0) | 2022.09.16 |
---|---|
PowerShell | 설치된 프로그램 삭제, 프로그램 삭제하기 (0) | 2022.08.09 |
PowerShell | Write-Host, Write-Output 차이 (0) | 2022.07.07 |
PowerShell | 명령어, 코드가 길어 질 때 개행, 줄바꿈 하기 (0) | 2022.07.05 |
PowerShell | 꼭 필요한 것들 !필수!, Confirm 과 WhatIf, 확인 과 만약 (0) | 2022.06.30 |
댓글