延續上次「使用 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 "您必須重新開機,才能讓設定生效!"
}
設定完成的結果,也可以直接從網路連線那邊看到: