TL;DR
- 수백 대 규모의 PC 자산 매각 시 수작업 조사는 모델명 누락과 부품 스펙 오기로 인해 입고 후 탁상 감가의 원인이 됩니다.
- 파워셸(PowerShell)과 WMI/CIM 명령어를 활용하면 Active Directory GPO나 사내 공유 폴더를 통해 무방문으로 하드웨어 정보를 자동 추출할 수 있습니다.
- CPU 상세 모델, RAM 실장 용량 및 슬롯 구성, 저장장치(SSD/HDD)의 실제 모델명과 인터페이스(NVMe/SATA)를 CSV로 취합해 견적 오차를 방지합니다.
- 사내 망 분리나 권한 환경에 맞춘 배포 방식을 설정하면 전산 엔지니어의 실사 공수를 90% 이상 절감할 수 있습니다.
핵심 개념
전산 장비 대량 매각에서 최종 입고 정산 금액이 초기 가견적과 달라지는 가장 흔한 원인은 '신청 사양과 실물 사양의 불일치'입니다. 구매 당시 스펙 대장만 믿고 견적을 의뢰했으나, 중간 수리 과정에서 저가 부품으로 교체되었거나 RAM 및 저장장치가 일부 탈거된 기기가 섞여 있을 때 사후 감가 분쟁이 발생합니다.
사전 실사 스크립트는 운영체제 내부의 관리 인프라(WMI/CIM)를 질의하여 장치 관리자에 인식된 실제 하드웨어 식별값을 CSV 형식으로 자동 수집합니다. IT 엔지니어가 각 자리를 방문해 케이스를 열거나 DXDIAG를 실행할 필요 없이, 실행 단 한 번으로 정확한 매입 견적의 기초 데이터를 생성합니다.
단계별 실행 가이드
1. 추출 대상 하드웨어 핵심 속성 정의
매입 업체가 가치 산정에 반영하는 핵심 부품은 CPU, 메모리, 저장장치, 메인보드(제조사 시리얼)입니다. 모호한 제품군 이름(예: Intel i5)이 아닌 구체적인 프로세서 식별자와 메모리 구성(싱글/듀얼 채널 여부 확인을 위한 슬롯별 용량), SSD 인터페이스를 타깃팅합니다.
2. PowerShell 인벤토리 수집 스크립트 작성
Active Directory 환경이나 로컬 관리자 권한에서 구동 가능한 PowerShell 스크립트를 작성합니다. 수집 결과는 중앙 SMB 네트워크 공유 폴더에 장비별 컴퓨터 이름(ComputerName)을 파일명으로 하여 저장하도록 구성합니다.
# Hardware_Inventory_Collector.ps1
$ErrorActionPreference = "SilentlyContinue"
# 1. 시스템 기본 정보
$ComputerName = $env:COMPUTERNAME
$OS = (Get-CimInstance Win32_OperatingSystem).Caption
$CS = Get-CimInstance Win32_ComputerSystem
$BIOS = Get-CimInstance Win32_Bios
# 2. 프로세서 (CPU)
$CPU = (Get-CimInstance Win32_Processor | Select-Object -First 1).Name.Trim()
# 3. 물리 메모리 (RAM 합산 및 슬롯 상세)
$RAMModules = Get-CimInstance Win32_PhysicalMemory
$TotalRAM_GB = [Math]::Round(($RAMModules | Measure-Object -Property Capacity -Sum).Sum / 1GB, 0)
$RAM_Details = ($RAMModules | ForEach-Object { "$([Math]::Round($_.Capacity / 1GB))GB $($_.Speed)MHz" }) -join " | "
# 4. 저장장치 (디스크 모델 및 용량)
$Disks = Get-CimInstance Win32_DiskDrive | Where-Object { $_.MediaType -match "Fixed" -or $_.InterfaceType -match "SCSI|IDE|NVMe" }
$Disk_Details = ($Disks | ForEach-Object {
$SizeGB = [Math]::Round($_.Size / 1GB, 0)
"$($_.Model.Trim()) (${SizeGB}GB)"
}) -join " ; "
# 5. 데이터 객체 생성
$InventoryData = [PSCustomObject]@{
ComputerName = $ComputerName
Manufacturer = $CS.Manufacturer.Trim()
Model = $CS.Model.Trim()
SerialNumber = $BIOS.SerialNumber.Trim()
CPU = $CPU
TotalRAM_GB = $TotalRAM_GB
RAM_Detail = $RAM_Details
Disks = $Disk_Details
OS_Version = $OS
ScanDate = (Get-Date -Format "yyyy-MM-dd HH:mm")
}
# 6. 네트워크 공유 드라이브 또는 로컬 임시 저장
$TargetShare = "\\Server01\PC_Inventory_Drop"
$OutputFile = Join-Path -Path $TargetShare -ChildPath "${ComputerName}.csv"
$InventoryData | Export-Csv -Path $OutputFile -NoTypeInformation -Encoding UTF8
3. 사내 인프라를 통한 배포 및 실행
- 도메인 환경(AD): 그룹 정책 개체(GPO)의 컴퓨터 시작 스크립트(Startup Script) 또는 사용자 로그온 스크립트에 배포하여 재부팅 시 자동 수집되도록 합니다.
- 워크그룹 및 폐쇄망 환경: 배치 파일(
Run_Audit.bat)과 스크립트를 공용 USB에 담아 부서별 서브 관리자가 실행하거나, 사내 메신저 공지로 배치 실행을 안내하여 결과 텍스트만 취합합니다. - 네트워크 폴더 쓰기 권한 설정: 공유 폴더는
Domain Computers또는Authenticated Users에게 '쓰기/생성' 권한만 부여하고 '수정/읽기' 권한을 제한하여 타 PC 정보 열람이나 변조를 방지합니다.
4. 수집 데이터 병합 및 매각 대장 정제
수집 완료 후 수백 개의 개별 CSV 파일을 파워셸 명령어로 하나의 마스터 시트로 병합합니다.
Get-ChildItem -Path "\\Server01\PC_Inventory_Drop\*.csv" |
ForEach-Object { Import-Csv $_.FullName } |
Export-Csv -Path "C:\Asset_Sale_Master.csv" -NoTypeInformation -Encoding UTF8
비교/체크리스트
수기 조사와 사전 실사 스크립트 방식 비교
| 구분 항목 | 자산 관리 대장 기반 수기 조사 | 사전 실사 파워셸 스크립트 방식 |
|---|---|---|
| 소요 시간(300대 기준) | 3~5일 (방문 확인 및 장비 분해) | 배포 후 1~2일 내 자동 완료 |
| 업무 방해 수준 | 사용자 자리 방문으로 업무 중단 | 백그라운드 3초 실행 (무중단) |
| 저장장치 파악 | 용량만 파악 (NVMe/SATA/HDD 혼동) | 벤더명, 컨트롤러 모델, 정확한 용량 식별 |
| 메모리 구성 확인 | 총량만 확인 (단일/듀얼 채널 누락) | 슬롯별 개별 용량 및 동작 클럭 명시 |
| 입고 후 견적 편차 | 부품 차이로 인한 감가율 10~25% 발생 | 오차율 1% 미만 (실제 장치값 일치) |
| 견적 산출 소요 기간 | 사양 정제에 2~3일 추가 지연 | 추출 즉시 당일 확정 견적 수령 가능 |
실무 사례 또는 예시
지방 사업장을 포함해 데스크톱 450대를 일괄 교체하려던 한 제조 기업의 IT팀 사례입니다. 초기에는 ERP에 기재된 '2020년 납품 i5 PC 450대' 기준으로 가견적을 요청했으나, 과거 유지보수 이력에 따라 일부 본체에 저사양 120GB SATA SSD와 단일 8GB RAM이 장착된 사실을 팀 내부에서도 알지 못했습니다.
방문 실사가 어려운 원격지 공장이 다수 포함되어 있어, 본사 IT팀은 위 파워셸 스크립트를 사내 패치 관리 시스템(PMS)을 통해 일괄 배포했습니다. 24시간 만에 432대의 실물 하드웨어 데이터가 취합되었으며, 그 결과 고성능 NVMe SSD 장착군 280대와 일반 보급형 SATA SSD 장착군 152대로 명확히 구분되었습니다.
정확한 모델별 수량을 사전에 매입사에 전달함으로써, '일괄 최저가 보수적 견적'이 아닌 '고성능 자산 프리미엄 반영 견적'을 확보할 수 있었고 입고 당일 발생할 수 있었던 수백만 원 대의 현장 감가 분쟁을 완전히 차단했습니다.
자주 묻는 질문(FAQ)
Q1. 도메인(AD) 환경이 아닌 개별 PC는 어떻게 실행하나요?
배치 파일(run.bat) 하나로 스크립트가 로컬 관리자 권한으로 실행되도록 묶어 사내 인트라넷 게시판이나 공용 네트워크 드라이브에 올려두고, 임직원이 1회 클릭하도록 안내하는 방식을 사용합니다. 실행 완료 시 파일 서버로 결과 텍스트가 바로 전송되므로 비전문가 임직원도 5초 안에 완료할 수 있습니다.
Q2. 파워셸 실행 정책(ExecutionPolicy) 제한 오류는 어떻게 우회하나요?
보안 정책으로 .ps1 파일 직접 실행이 차단된 경우, 배치 파일 내에서 powershell.exe -ExecutionPolicy Bypass -File .\Hardware_Inventory_Collector.ps1 옵션을 부여하여 세션 일시 예외 상태로 안전하게 인벤토리를 추출할 수 있습니다.
Q3. SSD의 건강 상태(S.M.A.R.T.)나 누적 사용 시간도 추출 가능한가요?
기본 WMI 클래스인 MSStorageDriver_FailurePredictStatus를 활용하거나 Get-PhysicalDisk의 HealthStatus 속성을 스크립트에 추가하면 정상/주의 여부를 1차 판별할 수 있습니다. 다만 정밀한 배드섹터나 수명 잔량은 전용 검수 툴이 필요하므로 초기 매각 견적 단계에서는 모델명과 규격 추출에 집중하는 것이 효율적입니다.
용어 설명
- WMI / CIM: Windows Management Instrumentation / Common Information Model의 약자로, 윈도우 운영체제에서 하드웨어와 시스템 설정 정보를 조회하고 제어할 수 있는 표준 관리 프레임워크입니다.
- 탁상감가: 자산 매각 시 초기 견적 단계에서 고지되지 않았던 부품 하향(저가 SSD, 싱글 RAM, 메인보드 불일치 등)이 입고 실물 검수에서 발견되어 최종 지급액이 차감되는 현상입니다.
- ITAD (IT Asset Disposition): 기업 내 불용 전산 장비를 회수하여 데이터 영구 파기, 하드웨어 성능 검수, 친환경 재활용 및 잔존 가치 유상 매각까지 포괄하는 전문 자산 처분 절차입니다.
마무리
대규모 전산 장비의 가치는 본체 케이스 내부의 정확한 부품 스펙에서 결정됩니다. 수작업 대장 관리의 불일치를 스크립트 기반 사전 실사로 전환하면 IT 부서의 현장 업무 공수를 대폭 줄이면서도 입고 후 감가 리스크를 원천적으로 차단할 수 있습니다.
추출된 CSV 파일이나 기존에 보유하신 전산 자산 리스트가 있다면 정리되지 않은 상태라도 그대로 전달해 주셔도 좋습니다. 불용 PC의 사양별 정확한 시장 잔존 가치를 빠르게 산출해 드립니다.