Windows가 설치된 컴퓨터에서는 PowerShell을 사용해 BIOS 설정을 손쉽게 조회하거나 변경할 수 있습니다. 이 글에서는 WMI(Windows Management Instrumentation) 클래스를 활용해 HP, Lenovo, Dell 등 주요 제조사 PC의 BIOS 설정을 가져오고 수정하는 실전 예제를 소개합니다.
기본 BIOS 정보 확인하기
Win32_BIOS 클래스와 함께 Get-WmiObject cmdlet을 사용하면 컴퓨터의 기본적인 BIOS 파라미터를 확인할 수 있습니다.
Get-WmiObject -Class Win32_BIOS | Format-List *
이 명령 하나로 BIOS 버전(SMBIOSBIOSVersion, BIOSVersion), 하드웨어 제조사, 시리얼 넘버, 릴리스 날짜(ReleaseDate) 등의 정보를 확인할 수 있습니다.

필요한 항목만 골라 출력할 수도 있습니다.
Get-WmiObject -Class Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion
Win32_BIOS 클래스는 Windows가 실행되는 모든 컴퓨터에서 BIOS 정보를 조회할 때 사용할 수 있습니다. 다만 일부 하드웨어 제조사는 Windows에서 BIOS에 직접 접근할 수 있는 전용 WMI 클래스를 별도로 제공합니다(단, 제조사의 네이티브 드라이버가 사전에 설치되어 있어야 합니다).
Lenovo BIOS 설정을 PowerShell로 관리하기
Lenovo PC에서 BIOS 파라미터와 현재 값을 조회하려면 아래 명령을 실행합니다.
Get-WmiObject -class Lenovo_BiosSetting -namespace root\wmi
설정 이름과 현재 값만 깔끔하게 표시하려면 다음과 같이 필터링합니다.
Get-WmiObject -class Lenovo_BiosSetting -namespace root\wmi | select-object InstanceName, currentsetting

BIOS 진입 암호가 설정되어 있는지 확인하려면 아래 명령을 사용합니다.
(gwmi -Class Lenovo_BiosPasswordSettings -Namespace root\wmi).PasswordState
반환값이 0이면 BIOS 암호가 설정되어 있지 않다는 의미입니다.

Lenovo PC에서는 일부 BIOS 항목을 직접 변경할 수도 있습니다. 예를 들어 WOL(Wake-On-LAN)을 활성화하는 방법은 다음과 같습니다.
$getLenovoBIOS = gwmi -class Lenovo_SetBiosSetting -namespace root\wmi
$getLenovoBIOS.SetBiosSetting("WakeOnLAN,Enable")
$SaveLenovoBIOS = (gwmi -class Lenovo_SaveBiosSettings -namespace root\wmi)
$SaveLenovoBIOS.SaveBiosSettings()
HP 컴퓨터에서 BIOS 설정 변경하기
HP PC에서 BIOS 설정 항목, 현재 값, 선택 가능한 옵션 목록을 조회하려면 다음 명령을 사용합니다.
Get-WmiObject -Namespace root/hp/instrumentedBIOS -Class hp_biosEnumeration | select Name, value, possiblevalues -AutoSize
PowerShell에서 HP PC의 BIOS 설정을 변경할 수도 있습니다. 예를 들어 USB 장치 부팅을 차단하고 싶다면 아래와 같이 실행합니다.
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios"
$getHPBios.SetBIOSSetting('USB Storage Boot','Disable')
설정 변경에 BIOS 암호가 필요한 경우에는 다음 스크립트처럼 암호를 함께 전달하면 됩니다.
$HPBIOSPassword = "<utf-16/>"+"Passw0rd!1"
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios"
$getHPBios.SetBIOSSetting('Network (PXE) Boot','Disable',$HPBIOSPassword)
마지막 명령이 0을 반환하면 성공적으로 실행된 것입니다. 간단한 반환 코드 처리기를 만들어 성공 여부를 자동으로 확인할 수도 있습니다.
$ChangeBIOS_State = $bios.setbiossetting('Network (PXE) Boot', 'Disable', $HPBIOSPassword)
$ChangeBIOS_State_Code = $ChangeBIOS_State.return
If(($ChangeBIOS_State_Code) -eq 0)
{
write-host "OK"
}
Else
{
write-host "Error - (Return code $ChangeBIOS_State_Code)" -Foreground Red
}
HP 노트북에서 LAN/WLAN Switching 옵션을 활성화하면 유선 이더넷 연결이 감지될 때 Wi-Fi가 자동으로 비활성화되어 불필요한 무선 연결을 줄일 수 있습니다.
$getHPBios.SetBIOSSetting('LAN/WLAN Switching','Enable')
Dell BIOS 설정을 PowerShell로 구성하기
Dell PC의 BIOS 설정을 조회하고 관리하려면 DCIM-BIOSService WMI 클래스 또는 더 최신 방식인 root\dellomci 클래스를 사용할 수 있습니다. root\dellomci는 OMCI 패키지(Open Manage Client Instrumentation)를 설치한 후에 사용할 수 있습니다.
Dell PC의 BIOS 부팅 장치 순서를 확인하려면 다음 명령을 실행합니다.
Get-WmiObject -NameSpace root\dellomci Dell_BootDeviceSequence | sort bootorder | select BootDeviceName, BootOrder

예를 들어 BIOS에서 Wake on LAN을 활성화하려면 아래와 같이 입력합니다.
(Get-WmiObject DCIM-BIOSService -namespace rootdcimsysman).SetBIOSAttributes($null,$null,"Wake-On-LAN","4")
또한 Dell은 별도의 PowerShell 모듈인 DellBIOSProvider를 제공합니다. 이 모듈은 드라이버 설치 과정에서 함께 설치되며, 필요하면 다음 명령으로 수동 설치할 수도 있습니다.
Install-Module -Name DellBIOSProvider -Force
이 모듈을 사용하면 Dell PC의 부팅 순서를 간편하게 조회할 수 있습니다.
Get-ChildItem DellSmbios:\BootSequence\Bootsequence
특정 BIOS 항목을 변경할 때는 Set-Item cmdlet을 사용합니다. 예를 들어 BIOS 암호를 변경하는 방법은 다음과 같습니다.
Set-Item -Path Dellsmbios:\Security\AdminPassword -Value BadDellPa$$ -Password G00dDe11P@ss
위에서 소개한 방법들을 조합하면 기준이 되는 컴퓨터에서 현재 BIOS 설정을 내보내는 PowerShell 스크립트(예: CSV 파일로 저장)를 작성할 수 있습니다. 이렇게 만든 스크립트를 활용하면 조직 내 모든 PC에 동일한 BIOS 설정을 일괄 배포할 수 있어 관리 효율이 크게 향상됩니다.