PowerShell2.0之维护网络(二)处理适配器配置


在处理所有适配器的状态后,还可以查询每个网络适配器的详细配置信息。可以通过选择“控制面板”|“网络和共享中心”|“网络连接”选项,打开“网络连接”窗口。在其中显示每个适配器的详细信息并做相应调整,如图1所示。

image

图1 在“网络连接”窗口中查看每个适配器的详细信息

创建名为“GetNetAdapterConfig.ps1”的脚本收集特定网络适配器的用于排错的详细信息,并且通过指定关键字仅返回有关网络适配器的特定配置信息,其代码如下:

param($computer="localhost",$query,$help)

function funHelp()

{

$helpText=@"

DESCRIPTION:

NAME: GetNetAdapterConfig.ps1

Produces a listing of network adapter configuration information

on a local or remote machine.

PARAMETERS:

-computer Specifies the name of the computer to run the script

-help prints help file

-query the type of query < ip, dns, dhcp, all >

SYNTAX:

GetNetAdapterConfig.ps1 -computerName WebServer

Lists default network adapter configuration on a

computer named WebServer

GetNetAdapterConfig.ps1 -computerName WebServer -query IP

Lists IPaddress, IPsubnet, DefaultIPgateway, MACAddress

on a computer named WebServer

GetNetAdapterConfig.ps1 -computerName WebServer -query DNS

Lists DNSDomain, DNSDomainSuffixSearchOrder, DNSServerSearchOrder,

DomainDNSRegistrationEnabled on a computer named WebServer

GetNetAdapterConfig.ps1 -computerName WebServer -query DHCP

Lists Index,DHCPEnabled, DHCPLeaseExpires, DHCPLeaseObtained,

DHCPServer on a computer named WebServer

GetNetAdapterConfig.ps1 -computerName WebServer -query ALL

Lists all network adapter configuration information on a computer

named WebServer

GetNetAdapterConfig.ps1 -help ?

Prints the help topic for the script

"@

$helpText

exit

}

if($help) { "Printing help now…" ; funHelp }

$class="win32_networkadapterconfiguration"

$IPproperty="IPaddress, IPsubnet, DefaultIPgateway, MACAddress"

$dnsProperty="DNSDomain, DNSDomainSuffixSearchOrder, `

DNSServerSearchOrder, DomainDNSRegistrationEnabled"

$dhcpProperty="Index,DHCPEnabled, DHCPLeaseExpires, `

DHCPLeaseObtained, DHCPServer"

if($query)

{

switch($query)

{

"ip" { $query="Select $IPproperty from $class" }

"dns" { $query="Select $dnsProperty from $class" }

"dhcp" { $query="Select $dhcpProperty from $class" }

"all" {

$query = "Select * from $class" ; `

Get-WmiObject -Query $query | format-list * ;

exit

}

DEFAULT {

$query = "Select * from $class" ; `

Get-WmiObject -Query $query ; exit

}

}

}

ELSE

{

$query = "Select * from $class" ; `

Get-WmiObject -Query $query ; exit

}

Get-WmiObject -query $query | format-table [a-z]* -AutoSize

该脚本使用param语句定义了3个参数,即-computer、-query及-help。其中设置-computer的默认值为localhost。如果用户未指定计算机,则默认返回本地计算机的网络配置。

接下来针对帮助信息创建的funhelp函数用于输出帮助信息,当用户未输入参数或输入错误的参数时,调用该函数提示输入的错误及正确的输入。脚本中使用if语句检查$help变量是否存在,因为只有用户在调用脚本时指定了-help参数,该变量才会存在。随后初始化用于WMI查询的变量,这些变量的存在是为了便于在后面对命令行应用中实现灵活调用。在用户输入的参数中包括-query参数时,脚本将会调用switch语句判断$query变量值。并执行相应的操作,输出ip、dns、dhcp和所有条目的信息。在$query变量无输入的情况下还特别使用ELSE语句将WMI对象中的所有属性发送给Get-WmiObject cmdlet查询,在控制台输出当前计算机中的所有网络连接的信息。在代码的最后将Get-WmiObject cmdlet查询的结果通过管道传递给Format-Table cmdlet格式化输出,在使用Format-Tables时需要指定符合Get-WmiObject cmdlet输出代码格式的参数。该脚本的执行结果如图2和图3所示。

image

图2 查询当前主机DHCP信息

image

图3 未指定检索项默认会输出所有的网络适配器信息

作者: 付海军
版权:本文版权归作者所有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.lzuer.com/


发表回复