■ 河南 劉景云
編者按:熟悉和掌握與網絡管理相關的Power Shell命令,對于管理員來說是極為重要的。本文將介紹使用Power Shell命令行如何能夠實現更加快捷地管理網絡。
對于Windo ws Server來說,一般情況下都是使用圖形化工具來對網絡進行管理。其實,在Windows中已經內置了Power Shell這款強大的命令行工具,可以很輕松地對網絡進行高效的管理操作。
使用PowerShell可以進行網絡初始化操作,獲取網卡信息,配置IP/默認網關/DNS服務器地址等。因為在PowerShell中提供了不同的Module,在每個Module中提供了不同的命令和函數,可以執行各種配置操作。這里以Windows Server 2016系統為例進行說明,執行“Get-NetAdapter”命令,顯示所有的網卡設備。執行“Get-NetIPAddress”命令,顯示所有網卡的詳細IP地址信息。這些命令實際上是由不同的Module來提供的,執行“Get-Command Get-NetAdapter”命令,在“Source”列中顯示提供該函數具體的Module的名稱。
例如想查看名為“NetAdapter”這個Module的話,可以執行“Get-Command -Module NetAdapte r”命令,可以顯示該Module中提供的所有函數。執行“Get-Command -Module NetAdapter|measure”命令,顯示具體的函數數量。執行“Get-Command -Module NetA dapter-Verb get”命令,可以查看在該Module中獲取信息的函數。例如執行“Get-NetAdapterAdvancedPropert y-name Management”命令,顯示關于名為“Management”這款網卡的高級屬性信息。執行“Get-Command -Module NetAdapter -Verb set”命令,可以查看該Module中相關的設置函數。
例如,執行“Get-Net Adapter|where{$_.ifindex-eq 6}|Rename-NetAdapter-name"newAdapter"”命令,可以將選定的網卡更名為“netAdapter”,該命令中的“6”表示該網卡的索引編號,在查看網卡信息的命令中會顯示該編號。
注意:該命令需要以管理員身份運行PowerSGell。
執行“Get-NetAdapter|where{$_.ifindex-eq 6}|N ew-NetIPAddress-IPAddres s 192.168.1.50 -DefaultG ateway '192.168.1.1'-Pre fixLength 24”命令,就可以針對目標網卡設置其IP和默認網關信息。執行“Set-DnsClientServerAddress-I nterfaceIndex 6 -ServerAd dresses '192.168.1.50'”命令,可以設置目標網卡的DNS服務器地址,其中的“6”表示該網卡的索引編號。執行“Get-Module”命令,顯示使用過的或者已經加載的Module。
對于PowerShell來說,不僅可以幫助用戶配置網絡信息,還可以幫助其完成對網絡狀態的基本診斷。例如執行“Get-Command Test-Co nnection”命令,可以測試主機的連通性,在返回信息中的“Source”列中顯示其來自于“Microsoft.PowerSHell.Management”這 個Module,該命令的作用和PING探測是基本一致的。執行“Test-Connection-ComputerName server1.xxx.com”命令,可以測試和目標主機的連通性。和PING命令不同,該命令可以同時針對多臺主機進行探測。
執行“Test-Connection-ComputerName server1.xx x.com,server2.xxx.com,se rver3.xxx.com”命令,可以依次對所有指定的主機進行連通性測試。
除了執行連通性測試之外,還可以使用該命令對目標主機進行遠程管理。這需要使用到DCOM或者Windows Service Management協議。執行“Test-Connection-ComputerName server1.xx x.com -Protocol DCOM -Cou nt 1”命令,使 用DCOM協議和目標主機建立連接,并且指定連接的次數為1次。當連接成功后,執行“Get-Process -ComputerName ser ver1.xxx.com”命令,查看目標主機上的進程信息。
如果在執行上述命令時出錯,那么原因有可能是因為域名解析失敗造成的。執行“Get-NetIPConfiguratio n”命令,查看本機的網絡配置信息, 在“DNSServer”欄中顯示DNS服務器地址。執行“Get-Command Resolve-DnsName”命令,顯示域名解析相關的是名為“DnsClient”的Module。
執行“Resolve-DnsName server1.xxx.com”命令,顯示目標主機的域名解析信息。這其實類似于Nslookup命令的效果,但是在Nslookup命令中是無法顯示默認DNS服務器的,這主要是沒有配置反向解析的緣故。執行“Enter-PSSession server1.xxx.com”命令,連接到目標主機,在鏈接提示符下執行“Get-DnsServer”命令,顯示DNS服務器的配置信息,假設在該主機上安裝了DNS服務器的角色。在返回信息總的“ZoneName”欄中沒有顯示所需的反向解析區域,所以在Nslookup命令中不會顯示默認DNS服務器的。
在遠程連接提示符下執行“Add-DnsServerPrimaryZ one-NetworkId"192.168.1.0/24" ReplicationScope D omain-DynamicUpdate Nons ecureAndSecure”命令,可針對目標網段配置反向解析區域,設置域中所有DC都需要復制該DNS記錄信息,設置合適的動態更新方式,這里假設使用了“192.168.1.0/24”的網段。
執行“Register-DnsCli ent”命令,添加注冊信息。執行“exit”命令,退出遠程連接環境。
在本地也可以執行上述命令,執行DNS記錄的注冊操作。
再次執行Nslookup命令,就可以發現其可以解析默認的服務器名稱了。執行“Resolve-DnsName server1.xxx.com”命令,就會發現域名解析沒有問題。這樣,就排除了因為域名解析問題,導致的連接失敗的情況。
執行“Get-Command-Module dnsclient”命令,顯示名為“dnsclient”的Module中的所有函數。例如執行“Get-DNsClientCache”命令,查看本地的DNS緩存 信息。執行“Clear-DnsClientCache”命令,可以清除DNS緩存。
除了使用DCOM和WSMAN協議進行網絡連接外,為了提高操作的靈活性,還可以使用Test-NetConnection命令來進行連接。執行“Get-Command Test-NetConnection” 命令,顯示其隸屬于名為“NetTCPIP”的Module。執行“Test-NetConnection-ComputerName server1xxx.com -CommonTCPPort HTTP”命令,可以測試目標主機的HTTP端口,在測試結果中的“TcpTestSucceded”欄中如果顯示“True”,說明成功。
在“-CommonTCPPort”參數后面還可以跟隨諸如RDP,SMB,WINRM等 類型。當然,也可以針對指定TCP端口進行特使。執行“Test-NetConnection-ComputerName server1.xx x.com -Port 3389”命令,可以測試遠程桌面連接。雖然Test-NetConnection命令沒有提供批量測試能力,但是可以采取變通的方式加以實現。例如執行“"server1xxx.com","server2xxx.com","s erver3xxx.com"|Test-NetC onnection-Port 3389”命令,即可對指定的所有主機進行連接測試。
實際上,如果本機配置了各種網絡參數后,系統會自動連接名為“internetbeacon.msedge.net”的服務器,如果連接成功,系統就會認為本機可以順利訪問Internet。否則在表示無法訪問。這就是網絡自動發現功能。
因此,執行“Test-NetCo nnection”命令,會自動和該域名建立連接,如果連接成功,則會顯示個該域名對應的IP地址等信息。執行“Test-NetConnection-ComputerName www.xxx.com-TraceRoute”命令,會顯示和目標服務器連接的路由信息。執行“Test-NetConne ction -ComputerName www.xxx.com-InformationLevel"detailed"”命令,可以顯示針對目標域名的更加詳細的連接信息。如果目標主機開啟了防火墻功能,也會造成連接失敗的情況“Enter-PSSession server1.xxx.com”命令,連接到目標主機,在遠程連接提示符下執行“Get-NetFirewallRule”命令,查看防火墻規則信息。
因為連接需要使用到ICMP協議,所以執行“Get-NetFirewallRule|Where{$_.name-like"*ic mp*"}|FT name,Displaynam e”命令,可以過濾和ICMP協議有關的規則。執行“Enable-NetFirewallRule-Name FPS-ICMP4-ERQ-IN”命令,允許使用ICMP協議進行連接。
當然,和防火墻管理相關命令有很多,執行“Get-Command-Module NetSecurity”命令,可以顯示所有的相關函數。執行“exit”命令退回本地。執行“Test-Connection -Compute rName server1.xxx.com”命令便可順利進行連接。