오늘은 Windows에서 Wi-Fi PowerShell Script 자동 설정 방법에 대해 포스팅 하려고 합니다.
Wi-Fi 설정을 자동으로 관리하는 PowerShell 스크립트를 사용하면, 네트워크 설정을 빠르고 간편하게 구성할 수 있습니다. 특히, 자주 사용하는 Wi-Fi 네트워크에 자동으로 연결하고 네트워크 구성을 적용해야 하는 상황에서 유용합니다.
일반적으로 Wi-Fi를 연결 할때 Wi-Fi 이름과 패스워드 정도만 알면 되지만, 특정 Wi-Fi는
IP, 서브넷, 게이트웨이, DNS를 입력해야 할 경우들이 있습니다.
그리고 일반적인 Wi-Fi를 사용할때는 다시 "자동으로 IP 주소 받기", "자동으로 DNS 서버 주소 받기"의
설정을 합니다.
위 내용을 상황에 따라 반복해서 설정해야 한다면 너무 번거로운 일입니다.
그래서 해당 작업을 필요한 상황에 따라 쉽게 설정할 수 있도록 PowerShell Script를 작성하였습니다.
1) config 정보들을 입력하여 Wi-Fi를 연결하는 경우
ChangeWiFiIPSettings.ps1 이름의 PowerShell Script 입니다.
아래 Script에서 SSID 및 네트워크 설정 부분에 필요한 Wi-Fi의 config 정보들을 변수에 입력하면 됩니다.
# ChangeWiFiIPSettings.ps1
# SSID 및 네트워크 설정
$SSID = "" # wifi 이름
$NewIPAddress = "" # 변경할 IP 주소
$SubnetMask = "" # 서브넷 마스크
$Gateway = "" # 기본 게이트웨이
$DNS1 = "" # 기본 DNS
$DNS2 = "" # 보조 DNS
# 관리자 권한 확인
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Write-Host "This script needs to be run as Administrator."
# 관리자 권한으로 스크립트 재실행
$newProcess = New-Object System.Diagnostics.ProcessStartInfo "powershell"
$newProcess.Arguments = "-NoProfile -ExecutionPolicy Bypass -File `"" + $PSCommandPath + "`""
$newProcess.Verb = "runas"
[System.Diagnostics.Process]::Start($newProcess)
# 스크립트 종료
exit
}
# 관리자 권한으로 실행되었음을 확인
Write-Host "Script is running with Administrator privileges."
# Wi-Fi 프로필이 존재하는지 확인
$wifiProfiles = netsh wlan show profiles
$profileExists = $wifiProfiles | Select-String -Pattern $SSID
if ($profileExists) {
Write-Host "$SSID profile found. Attempting to connect..."
# Wi-Fi 연결
netsh wlan connect name=$SSID
# 연결 상태 확인 및 대기
Start-Sleep -Seconds 10
$interfaces = netsh wlan show interfaces
$connectedSSID = ($interfaces | Select-String "SSID" | ForEach-Object { $_.ToString().Split(":")[1].Trim() })
if ($connectedSSID -eq $SSID) {
Write-Host "Connected to $SSID. Changing IP settings..."
# Wi-Fi 어댑터 확인
$wifiAdapter = Get-NetAdapter | Where-Object { $_.InterfaceDescription -like "*Wi-Fi*" }
if ($wifiAdapter) {
$adapterName = $wifiAdapter.Name
Write-Host "Using adapter: $adapterName"
# 기존 IP 주소 삭제
$existingIPs = Get-NetIPAddress -InterfaceAlias $adapterName
foreach ($ip in $existingIPs) {
Remove-NetIPAddress -InterfaceAlias $adapterName -IPAddress $ip.IPAddress -Confirm:$false
}
# 기존 기본 게이트웨이 삭제
$existingGateways = Get-NetRoute -InterfaceAlias $adapterName -DestinationPrefix "0.0.0.0/0"
foreach ($route in $existingGateways) {
Remove-NetRoute -InterfaceAlias $adapterName -DestinationPrefix $route.DestinationPrefix -Confirm:$false
}
# 새 IP 주소 설정
New-NetIPAddress -InterfaceAlias $adapterName -IPAddress $NewIPAddress -PrefixLength 24 -DefaultGateway $Gateway
# DNS 설정 변경
Set-DnsClientServerAddress -InterfaceAlias $adapterName -ServerAddresses ($DNS1, $DNS2)
Write-Host "IP and DNS settings updated for $SSID"
} else {
Write-Host "No active Wi-Fi adapter found."
}
} else {
Write-Host "Failed to connect to $SSID. No changes made."
}
} else {
Write-Host "$SSID profile not found. Please ensure the network is available and the profile exists."
}
2) 일반적인 Wi-Fi를 사용할때 config 설정
ChangeWiFiAutoSettings.ps1 이름의 PowerShell Script 입니다.
사용할 Wi-Fi를 선택하고 아래 스크립트를 실행하면 됩니다.
# ChangeWiFiAutoSettings.ps1
# 관리자 권한 확인
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Write-Host "This script needs to be run as Administrator."
# 관리자 권한으로 스크립트 재실행
$newProcess = New-Object System.Diagnostics.ProcessStartInfo "powershell"
$newProcess.Arguments = "-NoProfile -ExecutionPolicy Bypass -File `"" + $PSCommandPath + "`""
$newProcess.Verb = "runas"
[System.Diagnostics.Process]::Start($newProcess)
# 스크립트 종료
exit
}
# 관리자 권한으로 실행되었음을 확인
Write-Host "Script is running with Administrator privileges."
# Wi-Fi 어댑터만 대상
$wifiAdapters = Get-NetAdapter | Where-Object { $_.InterfaceDescription -like "*Wi-Fi*" -and $_.Status -eq 'Up' }
if ($wifiAdapters) {
foreach ($adapter in $wifiAdapters) {
$adapterName = $adapter.Name
Write-Host "Setting IP and DNS to automatic for Wi-Fi adapter: $adapterName"
# IP 주소 자동 할당 (DHCP)
Set-NetIPInterface -InterfaceAlias $adapterName -Dhcp Enabled
# DNS 서버 주소 자동 설정
Set-DnsClientServerAddress -InterfaceAlias $adapterName -ResetServerAddresses
Write-Host "IP and DNS settings set to automatic for Wi-Fi adapter: $adapterName"
}
} else {
Write-Host "No active Wi-Fi adapters found."
}
Write-Host "All active Wi-Fi adapters have been set to automatically obtain IP and DNS settings."
3) PowerShell Script 실행
스크립트를 저장한 후, 해당 디렉터리로 이동하여 다음 명령어를 실행합니다:
# ChangeWiFiIPSettings.ps1 실행
./ChangeWiFiIPSettings.ps1
# ChangeWiFiAutoSettings.ps1 실행
./ChangeWiFiAutoSettings.ps1
지금까지 Windows에서 Wi-Fi PowerShell Script 자동 설정 방법에 대한 포스팅 이였습니다.
'Develope > IT Tip' 카테고리의 다른 글
[API] REST API test url 사이트 (0) | 2022.05.24 |
---|---|
[Windows] 윈도우에서 Wifi 비밀번호 찾는 방법 (0) | 2022.04.25 |
[개인통관고유번호] 발급 방법 및 조회 방법 (0) | 2019.07.02 |
[윈도우10] 네트워크 사용량 확인 (0) | 2019.06.21 |
[카카오톡] 대화 내용 백업 및 복구 설명 (0) | 2019.06.19 |