이 기사에서는 PowerShell을 통해 Windows에서 네트워크 어댑터 매개변수를 구성하는 방법을 보여줍니다. 고정 IP 주소와 DNS(네임 서버)를 가져오고 설정하고 DHCP 서버에서 IP 구성을 가져오도록 네트워크 인터페이스를 구성하는 방법을 배웁니다. 이러한 cmdlet을 사용하여 Windows Server의 Core/Nano 버전, Hyper-V Server에서 네트워크를 구성하고 원격 컴퓨터/서버 및 PS 스크립트에서 IP 설정을 변경할 수 있습니다.
이전에는 netsh interface ipv4
명령은 CLI에서 Windows 네트워크 설정을 구성하는 데 사용되었습니다. PowerShell 3.0 이상에서는 내장된 PowerShell NetTCPIP를 사용할 수 있습니다. Windows 네트워크 설정을 관리하는 모듈입니다.
이 모듈의 cmdlet 목록을 가져오려면 다음 명령을 실행하십시오.
get-command -module NetTCPIP
이 모듈에는 원격 컴퓨터에서 TCP 포트 가용성을 테스트하는 데 사용할 수 있는 Test-NetConnection cmdlet도 포함되어 있습니다.
PowerShell로 네트워크 어댑터 관리
컴퓨터에서 사용 가능한 네트워크 인터페이스 목록 표시:
Get-NetAdapter
cmdlet은 인터페이스 이름, 상태(Up/Down), MAC 주소 및 포트 속도를 반환합니다.
이 예에서는 내 컴퓨터에 여러 네트워크 어댑터가 있습니다(물리적 연결 외에 Ethernet0 , 일부 Hyper-V 및 VMWare Player 네트워크 인터페이스가 있습니다.
이름이나 색인(색인 열). 이 예에서 물리적 LAN 어댑터 Intel 82574L을 선택하려면 다음 명령을 사용하십시오.
Get-NetAdapter -Name "Ethernet0"
또는:
Get-NetAdapter -InterfaceIndex 8
어댑터 이름을 변경할 수 있습니다.
Rename-NetAdapter -Name Ethernet0 -NewName LAN
네트워크 인터페이스를 비활성화하려면 다음 명령을 사용하십시오.
Get-NetAdapter -InterfaceIndex 13| Disable-NetAdapter
인터페이스를 활성화하면 아직 할당되지 않았기 때문에 해당 인덱스를 사용할 수 없습니다. 어댑터 이름 또는 설명을 지정할 수 있습니다.
Enable-NetAdapter -InterfaceDescription “Hyper-V Virtual Ethernet Adapter"
어댑터에 VLAN이 지정된 경우 다음과 같이 표시할 수 있습니다.
Get-NetAdapter | ft Name, Status, Linkspeed, VlanID
사용된 네트워크 어댑터 드라이버에 대한 정보를 얻는 방법은 다음과 같습니다.
Get-NetAdapter | ft Name, DriverName, DriverVersion, DriverInformation, DriverFileName
물리적 네트워크 어댑터에 대한 정보(PCI 슬롯, 버스 등):
Get-NetAdapterHardwareInfo
PowerShell을 사용하여 TCP/IP 네트워크 어댑터 설정을 보는 방법
현재 네트워크 어댑터 설정을 가져오려면(IP 주소, DNS, 기본 게이트웨이):
Get-NetIPConfiguration -InterfaceAlias Ethernet0
현재 네트워크 어댑터 TCP/IP 구성에 대한 자세한 정보를 표시하려면 다음 명령을 사용하십시오.
Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed
이 경우 인터페이스의 할당된 네트워크 프로필(NetProfile.NetworkCategory), MTU 설정(NetIPv4Interface.NlMTU), DHCP에서 IP 주소 가져오기가 활성화되었는지 여부(NetIPv4Interface.DHCP) 및 기타 유용한 정보가 표시됩니다.
인터페이스 IPv4 주소만 가져오려면:
(Get-NetAdapter -Name ethernet0 | Get-NetIPAddress).IPv4Address
PowerShell을 사용하여 고정 IP 주소 설정
NIC의 고정 IP 주소를 설정해 보겠습니다. 네트워크 인터페이스의 IP 주소, 서브넷 마스크 및 기본 게이트웨이를 변경하려면 다음을 사용하십시오.
New-NetIPAddress –IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24 -InterfaceIndex 8
배열 구조를 사용하여 IP 주소를 설정할 수 있습니다(보다 시각적으로):
$ipParams = @{
InterfaceIndex = 8
IPAddress = "192.168.2.50"
PrefixLength = 24
AddressFamily = "IPv4"
}
New-NetIPAddress @ipParams
고정 IP 주소가 이미 구성되어 있고 이를 변경하려는 경우 Set-NetIPAddress cmdlet 사용:
Set-NetIPAddress -InterfaceIndex 8 -IPAddress 192.168.2.90
어댑터에 대해 DHCP에서 IP 주소를 가져오는 것을 비활성화하려면 다음 명령을 실행하십시오.
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled
라우팅 테이블을 보기 위해 Get-NetRoute cmdlet이 사용됩니다. 새 경로를 추가하려면 New-NetRoute를 사용하세요. cmdlet:
New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop "192.168.2.2" -InterfaceIndex 8
네트워크 어댑터의 IPv6 프로토콜을 비활성화하려면:
Get-NetAdapterBinding -InterfaceAlias Ethernet0 | Set-NetAdapterBinding -Enabled:$false -ComponentID ms_tcpip6
Set-DnsClientServerAddress:기본 및 보조 DNS 서버 주소 설정
Windows에서 기본 및 보조 DNS 서버 IP 주소를 설정하려면 Set-DNSClientServerAddress cmdlet. 예:
Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 192.168.2.11,10.1.2.11
배열을 사용하여 네임서버를 설정할 수도 있습니다.
$dnsParams = @{
InterfaceIndex = 8
ServerAddresses = ("8.8.8.8","8.8.4.4")
}
Set-DnsClientServerAddress @dnsParams
DNS 설정을 변경한 후 확인자 캐시를 지울 수 있습니다.
Clear-DnsClientCache
PowerShell을 사용하여 고정 IP 주소를 DHCP로 변경하는 방법
컴퓨터가 네트워크 어댑터의 DHCP 서버에서 동적 IP 주소를 얻을 수 있도록 하려면 다음 명령을 실행하십시오.
Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled
DNS 서버 설정 지우기:
Set-DnsClientServerAddress –InterfaceIndex 8 -ResetServerAddresses
그리고 DHCP 서버에서 자동으로 IP 주소를 얻으려면 어댑터를 다시 시작하십시오.
Restart-NetAdapter -InterfaceAlias Ethernet0
이전에 기본 게이트웨이를 구성한 경우 제거하십시오.
Set-NetIPInterface -InterfaceAlias Ethernet0| Remove-NetRoute -Confirm:$false
PowerShell을 사용하여 원격으로 IP 주소 및 DNS 설정을 변경하는 방법
PowerShell을 사용하여 여러 원격 컴퓨터에서 IP 주소 또는 DNS 서버 설정을 원격으로 변경할 수 있습니다. 특정 AD 컨테이너(조직 구성 단위)의 모든 서버에 대한 DNS 설정을 변경하는 작업이 있다고 가정합니다. 아래 스크립트에서 컴퓨터 목록을 가져오기 위해 Get-ADComputer cmdlet이 사용되고 WinRM은 컴퓨터에 원격으로 연결하는 데 사용됩니다(Invoke-Command cmdlet).
$Servers = Get-ADComputer -SearchBase ‘OU=Servers,OU=Berlin,OU=DE,DC=woshub,DC=cpm’ -Filter '(OperatingSystem -like "Windows Server*")' | Sort-Object Name
ForEach ($Server in $Servers) {
Write-Host "Server $($Server.Name)"
Invoke-Command -ComputerName $Server.Name -ScriptBlock {
$NewDnsServerSearchOrder = "192.168.2.11","8.8.8.8"
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "Old DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
$Adapters | ForEach-Object {$_.SetDNSServerSearchOrder($NewDnsServerSearchOrder)} | Out-Null
$Adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_.DHCPEnabled -ne 'True' -and $_.DNSServerSearchOrder -ne $null}
Write-Host "New DNS settings: "
$Adapters | ForEach-Object {$_.DNSServerSearchOrder}
}
}