본문 바로가기
Windows/PowerShell

PowerShell | 하드디스크(SSD) 용량, 빈 공간, 사용률 확인하기

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

 

 

1. 그래픽 환경에서 디스크 용량 확인하는 방법

'내 PC'를 들어가면, 디스크 정보가 나온다. 

 

 

2. PowerShell 로 디스크 용량 확인하는 이유?

여러 가지 이유가 있겠지만, 해당 데이터를 가공하고 싶을 때에 확인하는 경우가 있겠다.

예를 들어서, 디스크 사용률을 알아보기 위해서이다.

 

 

3. PowerShell 에서 디스크 용량 확인하는 방법

여러 방법이 있다. 

Get-Volume 하면 정보가 충분히 가공되어서 나와있다. 

 

 

추후 활용을 위해서 변수에 담아 놓은 것이다.

바로 아래 코드를 보자.

 

Function Print-DiskDriverInfo()
{
    # 모든 디스크 드라이버 목록 구하기
    $driver_list = Get-WmiObject win32_LogicalDisk | Select -Property DeviceID

    foreach ($driver in $driver_list)
    {
    	# 각 드라이버 추출
        $disk = Get-WmiObject win32_LogicalDisk -Filter "DeviceID='$($driver.DeviceID)'"

        Write-Host "Driver Name :`t $($disk.DeviceID)"

        Write-Host "Disk Usage (Byte) :`t $($disk.Size) Byte"
        Write-Host "Disk Usage (KB) :`t $([Math]::Round($($disk.Size / 1kb), 1)) KB"
        Write-Host "Disk Usage (MB) :`t $([Math]::Round($($disk.Size / 1mb), 1)) MB"
        Write-Host "Disk Usage (GB) :`t $([Math]::Round($($disk.Size / 1gb), 1)) GB"

        Write-Host "Disk FreeSpace (Byte) :`t $($disk.FreeSpace) Byte"
        Write-Host "Disk FreeSpace (KB) :`t $([Math]::Round($($disk.FreeSpace / 1kb), 1)) KB"
        Write-Host "Disk FreeSpace (MB) :`t $([Math]::Round($($disk.FreeSpace / 1mb), 1)) MB"
        Write-Host "Disk FreeSpace (GB) :`t $([Math]::Round($($disk.FreeSpace / 1gb), 1)) GB"

        Write-Host "Disk Usage Rate (%) :`t $([Math]::Round( ($disk.Size - $disk.FreeSpace) * 100 / $disk.Size, 1)) %"
        "-------------------------------------------------------"
    }
}

 

(누군가가 HashTable 다루기 귀찮다고 해서 수정했다.)
수정 전 코드 보기👇

더보기
$hostname = hostname

# 모든 드라이버 목록 구하기
$driver_list = Get-PSDrive -PSProvider FileSystem | Select -Property Name

# 드라이버 정보 배열 선언
$driver_info_list = @()

# 디스크 정보 불러오기
foreach ($driver in $driver_list)
{
    $disk = Get-WmiObject win32_LogicalDisk `
                -ComputerName $hostname `
                -Filter "DeviceID='$($driver.Name):'"
    
    # 드라이버 정보 HashTable 만들기
    $driver_info = @{ "driver_name" = $disk.DeviceID      # 드라이버 이름
            ; "disk type" = $disk.DriveType      # 디스크 유형
            ; "driver_size" = $disk.Size       # 디스크 크기 (Byte)
            ; "free_space" = $disk.FreeSpace       # 디스크 여유 공간 (Byte)
            }

    # 드라이버 정보 목록에 드라이버 정보 추가
    $driver_info_list += $driver_info
}

$driver_info_list 에 있는 값을 잘 가공해보자.

 

 

"DriveType"은 숫자로 표현된다

2 : "Removable Disk"

3 : "Fixed Local Disk"

4 : "Network Disk"

5 : "Compact Disk"

( 출처 : Inventory Drive Types by Using PowerShell🔗 )

 

 

 

 


(참고자료)

Windows PowerShell 드라이브 관리 - https://docs.microsoft.com/ko-kr/powershell/scripting/samples/managing-windows-powershell-drives?view=powershell-7.2

about_Hash_Tables - https://docs.microsoft.com/ko-kr/powershell/module/microsoft.powershell.core/about/about_hash_tables?view=powershell-7.2

 

 

728x90
반응형

댓글