iT邦幫忙

DAY 24
1

強而有力的 Windows PowerShell系列 第 24

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

延續上次「使用 Windows PowerShell 設定網路卡的固定 IP 位址(上)」,繼續談談使用 Windows PowerShell 更進一步地設定網路卡固定 IP 位址的資訊。

強而有力的 Windows PowerShell 系列文章列表如下:
http://ithelp.ithome.com.tw/event/ironmanarticle2/id/20005121
假設要替說明欄位有 Intel 字樣的網路卡設定固定 IP 位址、取消登錄 DNS 尾碼、改變預設的路由公制(Metric)為 1、關閉 NetBIOS over TCP/IP、並設定 WINS 伺服器,可使用如下的命令:

$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"
$Metric = [int32]1

$NetBIOS = [int32]2
# 0 透過 DHCP 啟用 NetBIOS
# 1 啟用 NetBIOS
# 2 關閉 啟用 NetBIOS

$WINSServer = "192.168.192.253", "192.168.192.1"

cls

# 找到要設定的網路卡
# $_.Description 改用 match 運算子
$NIC = Get-WmiObject Win32_NetworkAdapterConfiguration |`
  Where {$_.IPEnabled -eq $True -and`
    $_.Description -match "Intel"}

# 檢查網路卡物件是否為 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, $Metric)
  # 檢查設定的回傳值,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 失敗!"}

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

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

  # 請注意:要用陣列方式來設定
  $Status = $NIC.SetWINSServer($WINSServer[0], $WINSServer[1])
  # 檢查設定的回傳值,0 表示設定成功,其他表示設定失敗
  if ($Status.ReturnValue -gt 0) {
    if ($Status.ReturnValue -eq 1) {
      $Reboot = $True
    }
    $OK = $False
    Write-Host "設定 WINS Server 失敗!"}
}

# 檢查設定結果
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 "路由公制 : " $NIC.GatewayCostMetric
  Write-Host "DNS 位址 : " $NIC.DNSServerSearchOrder
  Write-Host "登錄 DNS 尾碼 : " $NIC.DomainDNSRegistrationEnabled
  Write-Host "NetBIOS over TCP/IP 設定值 : " $NIC.TcpipNetbiosOptions 
  Write-Host "WINS 位址 1: " $NIC.WINSPrimaryServer
  Write-Host "WINS 位址 2: " $NIC.WINSSecondaryServer
}

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

設定完成的結果,也可以直接從網路連線那邊看到:


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

尚未有邦友留言

立即登入留言