修改網路卡的設定為 DHCP,同樣也需要透過 Win32_NetworkAdapterConfiguration 類別進行設定。
強而有力的 Windows PowerShell 系列文章列表如下:
http://ithelp.ithome.com.tw/event/ironmanarticle2/id/20005121
先從簡單的下手,用下列的命令可以找出已經啟用 DHCP 的網路卡,並搭配 Format-Table 的 Property 參數屬性來顯示與 DHCP 相關的介面卡屬性:
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter DHCPEnabled=true |`
Format-Table -Property DHCP*
以下面的命令來說,會替已啟用 IP 的每一張網路卡改用 DHCP,所以必須使用 ForEach-Object 為每張網路卡指派啟用 DHCP:
$OK = $True
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true |`
ForEach-Object -Process {
$Status = $_.EnableDHCP()
if ($Status.ReturnValue -gt 0) { $OK = $False }
}
if ($OK) {
Write-Host "設定成功!"
}
else {
Write-Host "設定失敗!"
}
其實原本應該是要這樣寫:
$OK = $True
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true and DHCPEnabled=false" |`
ForEach-Object -Process {
$Status = $_.EnableDHCP()
if ($Status.ReturnValue -gt 0) { $OK = $False }
}
if ($OK) {
Write-Host "設定成功!"
}
else {
Write-Host "設定失敗!"
}
也就是說要在 Filter 陳述式中,使用 "IPEnabled=true and DHCPEnabled=false" 來排除原已啟用 DHCP 的介面卡,由於省略這個檢查步驟,並不會造成錯誤,所以就偷懶省掉了。
如果要釋放出,然後再更新某個特定網路卡的 DHCP 租期,可透過 Win32_NetworkAdapterConfiguration 類別的 ReleaseDHCPLease 和 RenewDHCPLease 方法。這兩種方法的使用法是一樣的。一般來說,當我們需要釋出或更新特定子網路上某張網路卡的位址時,才會使用這些方法。至於要如何指定子網路上的網路卡,最簡單的做法便是找出使用了該子網路閘道的網路卡設定。例如,下列的命令將從向 192.168.192.254 取得 DHCP 租期的網路卡釋放出其所有的 DHCP 租期:
# 不特別處理執行結果的傳回值,所以在執行時,將會看到相關的屬性
Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true and DHCPEnabled=true" |`
Where-Object -FilterScript {$_.DHCPServer -contains "192.168.192.254"} |`
ForEach-Object -Process {$_.ReleaseDHCPLease()}
如果需更新 DHCP 的租期,只要改用 RenewDHCPLease 方法取代上面程式碼中的 ReleaseDHCPLease 方法即可:
# 不特別處理執行結果的傳回值,所以在執行時,將會看到相關的屬性
Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true and DHCPEnabled=true" |`
Where-Object -FilterScript {$_.DHCPServer -contains "192.168.192.254"} |`
ForEach-Object -Process {$_.RenewDHCPLease()}
請注意
如果使用這些方法釋出或更新遠端電腦上特定網路卡的租期之後,很可能會無法再透過該網路卡存取遠端系統。此外,不論是要釋出或更新本機或遠端電腦特定網路卡的租期,皆要確認有執行該操作的權限。
Win32_NetworkAdapterConfiguration 類別有提供 ReleaseDHCPLeaseAll 和 RenewDHCPLeaseAll 方法,可以一次釋出或更新所有介面卡的 DHCP 位址。由於全面釋出或更新租期的對象是類別而非任何一張網路卡,因此使用上述的兩個命令必須套用於 WMI 類別而非特定網路卡。那要如何取得 WMI 類別的參照呢?
可以先列出所有的 WMI 類別,然後依名稱只選取所需的 Win32_NetworkAdapterConfiguration 類別。接著將整個命令視為類別,並呼叫其 ReleaseDHCPLeaseAll 或 RenewDHCPLeaseAll 方法。例如,下列的命令會依序進行釋出與更新所有網路卡的 DHCP 租期操作:
# 不特別處理執行結果的傳回值,所以在執行時,將會看到相關的屬性
(Get-WmiObject -List |`
Where-Object -FilterScript {$_.Name -eq "Win32_NetworkAdapterConfiguration"}).ReleaseDHCPLeaseAll()
(Get-WmiObject -List |`
Where-Object -FilterScript {$_.Name -eq "Win32_NetworkAdapterConfiguration"}).RenewDHCPLeaseAll()