PowerShellを使ってIPアドレスやDNSの設定をする方法について紹介していきます。IPv6については言及していません。
ネットワークアダプタ―の取得
次のコマンドでネットワークアダプタ―を取得できます。
Get-NetAdapter
このコマンドはコンピュータに搭載されている全てのネットワークアダプターを取得してくれます。コンピューターには無線のアダプターと有線のアダプターが搭載されているなど、2つ以上のアダプターが搭載されているケースが多いので、設定したいアダプターを特定する必要があります。
ネットワークアダプタ―の特定
自分が設定したいアダプターを特定するには、アダプターのプロパティで見分けることになります。以下にいくつかサンプルを例示します。
$adapter = Get-NetAdapter | Where-Object {$_.Status -eq “up”}
$adapter = Get-NetAdapter | Where-Object {$_.PhysicalMediaType -like "*802.3*"}
$adapter = Get-NetAdapter | Where-Object {$_.PhysicalMediaType -like "*802.11*"}
$adapter = Get-NetAdapter | Where-Object {$_.InterfaceAlias -eq "イーサネット 1"}
IPアドレスとDNSを設定する
IPアドレスとDNSは次の様なコマンドで設定できます。
1 2 3 4 5 6 7 8 9 10 11 |
$adapter = Get-NetAdapter | Where-Object {$_.InterfaceAlias -eq "イーサネット 1"} # IPアドレスの設定 $adapter | New-NetIPAddress ` -AddressFamily "IPv4" ` -IPAddress "192.168.0.1" ` -PrefixLength 24 ` -DefaultGateway "192.168.0.254" # DNSの設定 $adapter | Set-DnsClientServerAddress -ServerAddresses "192.168.0.200,192.168.0.201" |
エラーに対処する
PowerShellのコンソール上で実行する場合は大丈夫なのですが、.ps1ファイルに保存して実行すると次の様なエラーが発生しました。
New-NetIPAddress : Instance MSFT_NetIPAddress already exists
調べてみると設定を削除してから実行する必要があるとのことです。ということで修正後のスクリプトは次の様になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
$adapter = Get-NetAdapter | Where-Object {$_.InterfaceAlias -eq "イーサネット 2"} # アダプターのコンフィグを取得 $conf = $adapter | Get-NetIPConfiguration # IPアドレスが設定されている場合 If ($conf.IPv4Address.IPAddress) { # その設定を削除する $adapter | Remove-NetIPAddress -AddressFamily $IPType -Confirm:$false } # デフォルトゲートウェイが設定されている場合 If ($conf.Ipv4DefaultGateway) { # その設定を削除する $adapter | Remove-NetRoute -AddressFamily $IPType -Confirm:$false } $adapter | New-NetIPAddress ` -AddressFamily "IPv4" ` -IPAddress "192.168.0.1" ` -PrefixLength 24 ` -DefaultGateway "192.168.0.254" $adapter | Set-DnsClientServerAddress -ServerAddresses "192.168.0.200,192.168.0.201" |