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