PowerShell 之 DNS Server (2)

上節提到使用PowerShell命令來管理DNS server的兩種方法,一是升級到powershell 4.0,二是加載DNSShell的模塊,那麼是否還有第三種方法呢?可能大家都想到了,WMI啊,WMI不是號稱萬能的麼偷笑

1.NameSpace

在PowerShell中調用WMI時,我們需要搞清楚我們需要查詢的對象屬於哪個namespace,在哪個Class中。怎麼知道DNS的信息在哪個namespace中,這個百度或者谷歌吧,或者記住我現在告訴你的ROOT\MicrosoftDNS。還有種方式是下載WMI explorer可以看到所有的namespace.

2. class

找到了names,還得知道相應的class,請參考以下鏈接:https://technet.microsoft.com/en-us/library/dd197491(v=ws.10).aspx

3.例子

<span style="font-size:14px;">Get-WmiObject -Namespace "ROOT\MicrosoftDNS" -Class MicrosoftDNS_Zone | select DnsServerName,ContainerName,Name,ZoneType,MasterServers</span>
說明:ZoneType=1就是主要區域,ZoneType=2就是輔助區域;
    MasterServers取的是主要區域的服務器
運行效果:


事情,往往沒有想象中的順利,原以爲export出來就萬事大吉了
Get-WmiObject -Namespace "ROOT\MicrosoftDNS" -Class MicrosoftDNS_Zone | select DnsServerName,ContainerName,Name,ZoneType,MasterServers | Export-Csv "C:\1\DNSZone.csv" -Encoding utf8 -NoTypeInformation
看看效果,出乎意外地讓人失望:

System.String[]是什麼鬼,看來還得調調,此時應該想起前面學習到的將屬性寫入一個數組再輸出的方法。

Get-WmiObject -Namespace "ROOT\MicrosoftDNS" -Class MicrosoftDNS_Zone | Select-Object DnsServerName,ContainerName,Name,ZoneType,
@{Name='MasterServer';Expression={$_.MasterServers -join '; '}} | Export-Csv "C:\1\DNSZone.csv" -Encoding utf8 -NoTypeInformation
運行效果,再看看?哈哈!是不是又瞬間覺得,世界如此美好?


剩下的還有那麼多class,那麼多屬性,有興趣的童鞋可自行研究研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章