2015-08-19 109 views
2

我正尝试在C#中使用WMI查询编写以下PowerShell脚本。WMI查询子域中的DNS CNAME

Get-DnsServerZone -ComputerName [DNS Server] | ? {$_.zonename} | Get-DnsServerResourceRecord -ComputerName [DNS Server] -RRType CNAME | ? {$_.Hostname -like "$DNSCname*"} | Format-Table 

这个片段将查询DNS并返回所有区域和管的结果给Get-DnsServerResourceRecord这将回所有记录的别名(和它的变体)存在于

,例如: $ DNSCname = 'ABCXYZ'

结果是:

ABCXYZ.domain1.com 
ABCXYZ123.subdomain.domain1.com 
ABCXYZ456.subdomain.domain2.com 

不幸的是下面的WMI查询不会为我工作。

"SELECT * FROM MicrosoftDNS_ResourceRecord WHERE OwnerName LIKE '%ABCXYZ%'" 

有没有办法编写WMI查询,它将返回与PowerShell脚本相同的结果?

回答

0

我99%确定此提供程序不支持以这种方式过滤(但我找不到参考)。你必须得到它们并在你的代码中进行过滤,顺便说一句,正是PowerShell代码中发生的事情(你让cmdlet本身就是WMI对象的薄包装,返回所有结果并然后通过使用?/Where-Object进行过滤)。