iT邦幫忙

DAY 23
1

強而有力的 Windows PowerShell系列 第 23

使用 Windows PowerShell 設定網路卡的固定 IP 位址(上)

這次來談談使用 Windows PowerShell 替網路卡設定固定 IP 位址的 IP、DNS、Gateway 等。因文章內容過長,分成上下兩集,此為上集。

強而有力的 Windows PowerShell 系列文章列表如下:
http://ithelp.ithome.com.tw/event/ironmanarticle2/id/20005121
正如上一次分享的「使用 Windows PowerShell 查詢網路卡的設定」,使用 Win32_NetworkAdapterConfiguration 類別來取得一般的設定屬性,但是它也可用來設定網路卡的 IP、DNS、Gateway 等。要注意的是,是否有修改這些網路卡設定的權限!

例如要替說明欄位為 Intel 21140-Based PCI Fast Ethernet Adapter 的網路卡設定固定 IP 位址,可使用如下的命令:

$OK = $True
$Reboot = $False
$IP = "192.168.192.30"
$SubNet = "255.255.255.0"
$Gateway = "192.168.192.254"
$DNSServers = "168.95.1.1", "168.95.192.1"

cls

# 找到要設定的網路卡
$NIC = Get-WmiObject Win32_NetworkAdapterConfiguration |`
  Where {$_.IPEnabled -eq $True -and`
    $_.Description -eq "Intel 21140-Based PCI Fast Ethernet Adapter"}

# 檢查網路卡物件是否為 null
if ($NIC -eq $Null) {
  $OK = $False
  Write-Host "找不到要設定的網路卡!"
}
else
{
  # 開始設定
  $Status = $NIC.EnableStatic($IP, $SubNet)
  # 檢查設定的回傳值,0 表示設定成功,其他表示設定失敗
  if ($Status.ReturnValue -gt 0) {
    if ($Status.ReturnValue -eq 1) {
      $Reboot = $True
    }
    $OK = $False
    Write-Host "設定 IP 位址失敗!"}

  $Status = $NIC.SetGateWays($Gateway)
  # 檢查設定的回傳值,0 表示設定成功,其他表示設定失敗
  if ($Status.ReturnValue -gt 0) {
    if ($Status.ReturnValue -eq 1) {
      $Reboot = $True
    }
    $OK = $False
    Write-Host "設定預設閘道失敗!"}

  $Status = $NIC.SetDNSServerSearchOrder($DNSServers)
  # 檢查設定的回傳值,0 表示設定成功,其他表示設定失敗
  if ($Status.ReturnValue -gt 0) {
    if ($Status.ReturnValue -eq 1) {
      $Reboot = $True
    }
    $OK = $False
    Write-Host "設定 DNS 失敗!"}
}

# 檢查設定結果
if ($OK) {
  # 暫停 500 毫秒讓設定生效
  Start-Sleep -m 500

  Write-Host "設定成功!設定的結果如下:"
  Write-Host "=============================="
  Write-Host "網路卡說明 : " $NIC.Description
  Write-Host "IP 位址 : " $NIC.IPAddress
  Write-Host "預設閘道 : " $NIC.DefaultIPGateway
  Write-Host "DNS 位址 : " $NIC.DNSServerSearchOrder
}

if ($Reboot) {
  Write-Host "您必須重新開機,才能讓設定生效!"
}


上一篇
使用 Windows PowerShell 查詢網路卡的設定
下一篇
使用 Windows PowerShell 設定網路卡的固定 IP 位址(下)
系列文
強而有力的 Windows PowerShell33

尚未有邦友留言

立即登入留言