기 타 PC/노트북 정보를 가져올수 있는 스크립트 짜는데 잘 안되네요
2024.03.27 19:07
PC/노트북 정보를 가져올수 있는 스크립트 짜는데 잘 안되네요
PC/노트북 모델명과 SER NO(일련번호,제조번호) 확인할수 있는 스크립트 짜주실수 있는분 계신가요?
많이는 못드리지만 사례하겠습니다.
컴퓨터업에 일하면서 일일히 육안으로 하는게 불편하여 만들어볼까 하는데 인터넷 검색 자료를 찾아
실행해봤는데 제조사 라벨과 다른게 나와서요
좋은 방법이 있을까요?
마킹된부분이 해결이 안되거나 오정보가 출력되는 부분입니다.
ㅁ 필요한 정보
1.장비정보는 제조사,모델명,SER NO
2.윈도우 정보는 윈도우 버전,OS 빌드번호(19045.4170),원래 설치 날짜,컴퓨터이름
3.하드웨어정보는 CPU 모델명,기본속도,코어갯수,논리프로세스 갯수,L1캐쉬,L2캐쉬,L3캐쉬
4.메모리 정보는 슬롯1,제조사,속도,타입,용량 슬롯2,제조사,클럭,타입,용량 슬롯3,제조사,클럭,타입,용량 슬롯4,제조사,클럭,타입,용량
5.SSD/HDD정보는 SATA1,제조사,모델명,SER NO,인터페이스,용량 SATA2,제조사,모델명,SER NO,인터페이스,용량 SATA3,제조사,모델명,SER NO,인터페이스,용량 SATA4,제조사,모델명,SER NO,인터페이스,용량
6.ODD 정보는 제조사,모델명,SER NO,인터페이스
7.그래픽카드 정보는 모델명,메모리크기
8.메인보드 정보는 제조사,칩셋명,바이오스 버젼
9.네트워크 정보는 MAC ADDRESS,IPV4 주소
ㅁ 스크립트
# 파일 저장 경로 설정
$filePath = "$([Environment]::GetFolderPath('Desktop'))\내컴퓨터정보_$(Get-Date -Format "yyyyMMddHHmmss").txt"
# 정보 수집 및 출력 준비
$info = @()
# 장비 정보 수집
$csproduct = Get-WmiObject Win32_ComputerSystemProduct
$serialNumber = (Get-WmiObject Win32_BIOS).SerialNumber
$info += "장비 정보"
$info += "VENDER: $($csproduct.Vendor)"
$info += "VERSION: $($csproduct.Version)"
$info += "SER NO: $serialNumber"
$info += ""
# 윈도우 정보 수집
$os = Get-WmiObject Win32_OperatingSystem
$info += "윈도우 정보"
$info += "윈도우 버전: $($os.Caption)"
$info += "OS 빌드번호: $($os.BuildNumber)"
$info += "원래 설치 날짜: $($os.ConvertToDateTime($os.InstallDate))"
$info += "컴퓨터 이름: $($os.CSName)"
$info += ""
# CPU 정보 수집
$cpu = Get-WmiObject -Class Win32_Processor
$info += "CPU 정보"
$info += "모델명: $($cpu.Name)"
$info += "기본속도: $($cpu.MaxClockSpeed)MHz"
$info += "코어갯수: $($cpu.NumberOfCores)"
$info += "논리프로세스 갯수: $($cpu.NumberOfLogicalProcessors)"
$info += "L1캐쉬: $($cpu.L2CacheSize)KB"
$info += "L2캐쉬: $($cpu.L3CacheSize)KB"
$info += "L3캐쉬: $($cpu.L3CacheSize)KB"
$info += ""
# 메모리 정보 수집
$mem = Get-WmiObject Win32_PhysicalMemory
$info += "메모리 정보"
foreach ($slot in $mem) {
$info += "슬롯 $($slot.DeviceLocator): 제조사 - $($slot.Manufacturer), 속도 - $($slot.Speed)MHz, 타입 - $($slot.SMBIOSMemoryType), 용량 - $($slot.Capacity / 1GB)GB"
}
$info += ""
# SSD/HDD 정보 수집
$disks = Get-WmiObject Win32_DiskDrive
$info += "SSD/HDD 정보"
foreach ($disk in $disks) {
$info += "인터페이스 $($disk.InterfaceType): 제조사 - $($disk.Manufacturer), 모델명 - $($disk.Model), SER NO - $($disk.SerialNumber), 용량 - $($disk.Size / 1GB)GB"
}
$info += ""
# 그래픽카드 정보 수집
$video = Get-WmiObject Win32_VideoController
$info += "그래픽카드 정보"
$info += "모델명: $($video.Name)"
$info += "메모리크기: $($video.size)"
$info += ""
# 메인보드 정보 수집
$mb = Get-WmiObject Win32_BaseBoard
$info += "메인보드 정보"
$info += "제조사: $($mb.Manufacturer)"
$info += "칩셋명: $($mb.Product)"
$info += "바이오스 버전: $($mb.Version)"
$info += ""
# 네트워크 정보 수집
$network = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled -eq $true}
$info += "네트워크 정보"
$info += "MAC ADDRESS: $($network.MACAddress)"
$info += "IPV4 주소: $($network.IPAddress[0])"
$info += ""
# 정보 파일로 저장
$info | Out-File -FilePath $filePath -Encoding UTF8
Write-Host "정보가 바탕화면에 저장되었습니다: $filePath"
댓글 [9]
-
라랑 2024.03.27 19:36
-
YoungSS 2024.03.27 20:02
위 장비정보, 윈도정보 부분은 이렇게 바꾸면 됩니다.
Version Family는 Version 정보와 연관이 있는거 같아 제가 추가했습니다.
다른 부분은 아직 모르겠습니다.
# 장비 정보 수집 $csproduct = Get-ComputerInfo $info += "장비 정보" $info += "VENDER: $($csproduct.CsManufacturer)" $info += "VERSION: $($csproduct.CsModel)" $info += "VERSION FAMILY: $($csproduct.CsSystemFamily)" $info += "SER NO: $($csproduct.BiosSeralNumber)" $info += "" # 윈도우 정보 수집 $os = Get-WmiObject Win32_OperatingSystem $versionUBR = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name UBR).UBR $info += "윈도우 정보" $info += "윈도우 버전: $($os.Caption)" $info += "OS 빌드번호: $($os.BuildNumber).$($versionUBR)" $info += "원래 설치 날짜: $($os.ConvertToDateTime($os.InstallDate))" $info += "컴퓨터 이름: $($os.CSName)" $info += ""
-
독산나라 2024.03.27 21:04
# 파일 저장 경로 설정
$filePath = "$([Environment]::GetFolderPath('Desktop'))\내컴퓨터정보_$(Get-Date -Format "yyyyMMddHHmmss").txt"
# 정보 수집 및 출력 준비
$info = @()
# 장비 정보 수집
$csproduct = Get-ComputerInfo
$info += "장비 정보"
$info += "VENDER: $($csproduct.CsManufacturer)"
$info += "VERSION: $($csproduct.CsModel)"
$info += "VERSION FAMILY: $($csproduct.CsSystemFamily)"
$info += "SER NO: $($csproduct.BiosSeralNumber)"
$info += ""
# 윈도우 정보 수집
$os = Get-WmiObject Win32_OperatingSystem
$versionUBR = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name UBR).UBR
$info += "윈도우 정보"
$info += "윈도우 버전: $($os.Caption)"
$info += "OS 빌드번호: $($os.BuildNumber).$($versionUBR)"
$info += "원래 설치 날짜: $($os.ConvertToDateTime($os.InstallDate))"
$info += "컴퓨터 이름: $($os.CSName)"
$info += ""
# CPU 정보 수집
$cpu = Get-WmiObject -Class Win32_Processor
$info += "CPU 정보"
$info += "모델명: $($cpu.Name)"
$info += "기본속도: $($cpu.MaxClockSpeed)MHz"
$info += "코어갯수: $($cpu.NumberOfCores)"
$info += "논리프로세스 갯수: $($cpu.NumberOfLogicalProcessors)"
$info += "L1캐쉬: $($cpu.L2CacheSize)KB"
$info += "L2캐쉬: $($cpu.L3CacheSize)KB"
$info += "L3캐쉬: $($cpu.L3CacheSize)KB"
$info += ""
# 메모리 정보 수집
$mem = Get-WmiObject Win32_PhysicalMemory
$info += "메모리 정보"
foreach ($slot in $mem) {
$info += "슬롯 $($slot.DeviceLocator): 제조사 - $($slot.Manufacturer), 속도 - $($slot.Speed)MHz, 타입 - $($slot.SMBIOSMemoryType), 용량 - $($slot.Capacity / 1GB)GB"
}
$info += ""
# SSD/HDD 정보 수집
$disks = Get-WmiObject Win32_DiskDrive
$info += "SSD/HDD 정보"
foreach ($disk in $disks) {
$info += "인터페이스 $($disk.InterfaceType): 제조사 - $($disk.Manufacturer), 모델명 - $($disk.Model), SER NO - $($disk.SerialNumber), 용량 - $($disk.Size / 1GB)GB"
}
$info += ""
# 그래픽카드 정보 수집
$video = Get-WmiObject Win32_VideoController
$info += "그래픽카드 정보"
$info += "모델명: $($video.Name)"
$info += ""
# 메인보드 정보 수집
$mb = Get-WmiObject Win32_BaseBoard
$info += "메인보드 정보"
$info += "제조사: $($mb.Manufacturer)"
$info += "칩셋명: $($mb.Product)"
$info += "바이오스 버전: $($mb.Version)"
$info += ""
# 네트워크 정보 수집
$network = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled -eq $true}
$info += "네트워크 정보"
$info += "MAC ADDRESS: $($network.MACAddress)"
$info += "IPV4 주소: $($network.IPAddress[0])"
$info += ""
# 정보 파일로 저장
$info | Out-File -FilePath $filePath -Encoding UTF8
Write-Host "정보가 바탕화면에 저장되었습니다: $filePath"
장비 정보
VENDER: LENOVO
VERSION: 10FCS06000
VERSION FAMILY: ThinkCentre M900
SER NO: PC0BGA97
윈도우 정보
윈도우 버전: Microsoft Windows 10 Pro
OS 빌드번호: 19045.4170
원래 설치 날짜: 10/06/2022 11:31:04
컴퓨터 이름: WIN10-01
CPU 정보
모델명: Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz
기본속도: 2712MHz
코어갯수: 4
논리프로세스 갯수: 4
L1캐쉬: 1024KB(실제 256K)
L2캐쉬: 6144KB(실제 1.0M)
L3캐쉬: 6144KB(실제 6.0M)
메모리 정보
슬롯 ChannelA-DIMM1: 제조사 - Samsung, 속도 - 2133MHz, 타입 - 26, 용량 - 8GB
슬롯 ChannelB-DIMM1: 제조사 - Samsung, 속도 - 2133MHz, 타입 - 26, 용량 - 8GB
SSD/HDD 정보
인터페이스 IDE: 제조사 - (표준 디스크 드라이브), 모델명 - CT250MX500SSD1, SER NO - 1821E13E7E21, 용량 - 232.883484363556GB
그래픽카드 정보
모델명: Mirage Driver AMD Radeon(TM) RX 560 Series
메인보드 정보
제조사: LENOVO
칩셋명: SKYBAY
바이오스 버전: SDK0J40705 WIN 3425044076424
네트워크 정보
MAC ADDRESS: 22:CC:33:34:F3:20
IPV4 주소: 192.168.0.9
YoungSS님이 알려주신 내용 반영하니 제조사,제품명,SER NO,OS빌드번호는 해결되었구요
L1,L2 값은 실제 값과 괴리가 있는데 차차수정필요,그래픽카드 메모리 용량도 차차 수정필요
YoungSS님,라랑님 감사드리구요.소통할수 있는방법 알려주시면 소소하지만 사례하겠습니다.
-
독산나라 2024.03.27 21:08
모델명은 브랜드에 따라 값의 위치가 달라지네요.삼성,델은 내일 확인해봐야겠네요
스크립트는 변경되어도 되구요
원하는 값을 얻는 스크립트가 완성되면 공유하도록 하겠습니다.
고수님들의 조언 감사합니다.
-
YoungSS 2024.03.27 21:40
L1,L2,L3 캐쉬는 Win32_Processor 말고,
Win32_CacheMemory의 정보를 번역해 얻었습니다.
캐쉬에 대한 이해력이 제가 부족해 출력된 그대로 전환해
이렇게 표시되게 해봤습니다.
# CPU 정보 수집
$cpu = Get-WmiObject -Class Win32_Processor $info += "CPU 정보" $info += "모델명: $($cpu.Name)" $info += "기본속도: $($cpu.MaxClockSpeed)MHz" $info += "코어갯수: $($cpu.NumberOfCores)" $info += "논리프로세스 갯수: $($cpu.NumberOfLogicalProcessors)" $Level = @{ Name = 'Level'; Expression = { $value = $_.Level switch([int]$value) { 1 {'Other'} 2 {'Unknown'} 3 {'Primary'} 4 {'Secondary'} 5 {'Tertiary'} 6 {'Not Applicable'} default {"$value"} } } } $StatusInfo = @{ Name = 'StatusInfo'; Expression = { $value = $_.StatusInfo switch([int]$value) { 1 {'Other'} 2 {'Unknown'} 3 {'Enabled'} 4 {'Disabled'} 5 {'Not Applicable'} default {"$value"} } } } $Associativity = @{ Name = 'Associativity'; Expression = { $value = $_.Associativity switch([int]$value) { 1 {'Other'} 2 {'Unknown'} 3 {'Direct Mapped'} 4 {'2-way Set-Associative'} 5 {'4-way Set-Associative'} 6 {'Fully Associative'} 7 {'8-way Set-Associative'} 8 {'16-way Set-Associative'} default {"$value"} } } } $WritePolicy = @{ Name = 'WritePolicy'; Expression = { $value = $_.WritePolicy switch([int]$value) { 1 {'Other'} 2 {'Unknown'} 3 {'Write Back'} 4 {'Write Through'} 5 {'Varies with Address'} 6 {'Determination Per I/O'} default {"$value"} } } } $ConvertCacheInfo = (Get-CimInstance -ClassName Win32_CacheMemory | Select-Object Purpose, BlockSize, Caption, $Level, $StatusInfo, InstalledSize, MaxCacheSize, NumberOfBlocks, $WritePolicy, $Associativity | Out-String).Trim() $info += "L1, L2, L3 캐쉬 정보: `n $ConvertCacheInfo`n"
-
마르코 2024.03.28 09:06
아 정말 훌륭한네요 그런데 이건 배치파일 형식으로 되어 있는건가요 아님 스크립트 파일 형식으로 되어 있는건가요?
-
독산나라 2024.03.28 11:48
스크립트 파일을 exe파일로 만들어서 사용예정입니다.
일단 여기까지 만들어서 사용예정이구요.그래픽카드 메모리 용량과 메인보드명은 시간내서 확인해야할것 같습니다.
현재까지 스크립트 파일 공유하오니 필요하신분 있으시면 사용하시구요.배치파일이나 exe파일로 만들어서 쓰셔도 되구요.
관심갖아주신 라랑님,YoungSS님,마르코님 진심으로 감사드립니다.
더 좋은 방법있으시면 함께 공유해요
즐건하루되세요
# 파일 저장 경로 설정
$filePath = "$([Environment]::GetFolderPath('Desktop'))\내컴퓨터정보_$(Get-Date -Format "yyyyMMddHHmmss").txt"
# 정보 수집 및 출력 준비
$info = @()
# 장비 정보 수집
$csproduct = Get-ComputerInfo
$info += "장비 정보"
$info += "VENDER: $($csproduct.CsManufacturer)"
$info += "VERSION: $($csproduct.CsModel)"
$info += "VERSION FAMILY: $($csproduct.CsSystemFamily)"
$info += "SER NO: $($csproduct.BiosSeralNumber)"
$info += ""
# 윈도우 정보 수집
$os = Get-WmiObject Win32_OperatingSystem
$versionUBR = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name UBR).UBR
$info += "윈도우 정보"
$info += "윈도우 버전: $($os.Caption)"
$info += "OS 빌드번호: $($os.BuildNumber).$($versionUBR)"
$info += "원래 설치 날짜: $($os.ConvertToDateTime($os.InstallDate))"
$info += "컴퓨터 이름: $($os.CSName)"
$info += ""
# CPU 정보 수집
$cpu = Get-WmiObject -Class Win32_Processor
$info += "CPU 정보"
$info += "모델명: $($cpu.Name)"
$info += "기본속도: $($cpu.MaxClockSpeed)MHz"
$info += "코어갯수: $($cpu.NumberOfCores)"
$info += "논리프로세스 갯수: $($cpu.NumberOfLogicalProcessors)"
$info += "L1캐쉬: $($cpu.L1CacheSize)KB"
$info += "L2캐쉬: $($cpu.L2CacheSize)KB"
$info += "L3캐쉬: $($cpu.L3CacheSize)KB"
$info += ""
# 메모리 정보 수집
$mem = Get-WmiObject Win32_PhysicalMemory
$info += "메모리 정보"
foreach ($slot in $mem) {
$info += "슬롯 $($slot.DeviceLocator): 제조사 - $($slot.Manufacturer), 속도 - $($slot.Speed)MHz, 타입 - $($slot.SMBIOSMemoryType), 용량 - $($slot.Capacity / 1GB)GB"
}
$info += ""
# SSD/HDD 정보 수집
$disks = Get-WmiObject Win32_DiskDrive
$info += "SSD/HDD 정보"
foreach ($disk in $disks) {
$info += "인터페이스 $($disk.InterfaceType): 제조사 - $($disk.Manufacturer), 모델명 - $($disk.Model), SER NO - $($disk.SerialNumber), 용량 - $($disk.Size / 1GB)GB"
}
$info += ""
# 그래픽카드 정보 수집
$video = Get-WmiObject Win32_VideoController
$info += "그래픽카드 정보"
$info += "모델명: $($video.Name)"
$info += ""
# 메인보드 정보 수집
$mb = Get-WmiObject Win32_BaseBoard
$info += "메인보드 정보"
$info += "제조사: $($mb.Manufacturer)"
$info += "칩셋명: $($mb.Product)"
$info += "바이오스 버전: $($mb.Version)"
$info += ""
# 네트워크 정보 수집
$network = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.IPEnabled -eq $true}
$info += "네트워크 정보"
$info += "MAC ADDRESS: $($network.MACAddress)"
$info += "IPV4 주소: $($network.IPAddress[0])"
$info += ""
# 정보 파일로 저장
$info | Out-File -FilePath $filePath -Encoding UTF8
Write-Host "정보가 바탕화면에 저장되었습니다: $filePath"
-
YoungSS 2024.03.28 13:33
독산나라님, 이건 그래픽카드 정보수집 부분입니다.
Adapter RAM이 님이 찾던거고, 추가 용량정보도 있어
출력되는 이름 그대로 표시되게 했습니다.
# 그래픽카드 정보 수집
$video = Get-WmiObject Win32_VideoController $DisAdapterRAM = $video | %{"{0} MB" -f ($_.AdapterRAM / 1MB)} $InfoFile = "$((Get-Location).Path)\$(Get-Date -F yy-MM-dd-HH-mm)-dxDiagReport.xml" dxdiag.exe /whql:off /dontskip /x $InfoFile [XML]$dxDiagInfo = gci *.xml | Sort CreationTime -desc | Select -Fir 1 | Get-Content $Display = $dxDiagInfo.DxDiag.DisplayDevices.DisplayDevice $info += "그래픽카드 정보" $info += "모델명: $($video.Name)" $info += "메모리크기:`n Adapter RAM - $($DisAdapterRAM) Dedicated Memory - $($Display.DedicatedMemory) Display Mermory - $($Display.DisplayMemory) Shared Memory - $($Display.SharedMemory)" $info += ""
-
슈퍼깻잎 2024.03.28 18:42
좋은 자료 네요. 수고 하셨습니다.
노랑**님이 배포해주신 빌더안에 전부다 있긴한데... 너무 정성으로 만들어놓으셔서 안건드리고 싶었던 ... 제거 필요한것만 빼다 쓰고있긴한뎅... 역시 제것이 아니라 스크립트를 그대로 긁어서 올려드릴순 없고 syst****.cmd라는 파일명으로 작성되어 있습니다. 기타 다른 파일들도... wim의 필요한 스크립트만 빼는 것도 언젠가 댓글에 올린적이 있는데... 저는 여기까지;;^^:
아 그리고 예전에 다른분들이 만들어놓으신 툴도 있는데 나무님거랑 suk님거... 죄송합니다. 좌표는 모릅니다.;; 누군가 아래 달아주실듯