2017-07-24 111 views
0

我试图检索一些DNS记录数据,并希望获取主机名和它们的IPv4地址。之后做一些研究,我发现,为了获得IPv4地址,我需要做一个计算表达式:单哈希(C#)Powershell多个表达式

ps.AddParameter("Property", "HostName"); 

ps.AddParameter("Property",    
     new Hashtable 
     { 
      {"Name", "RecordData"}, 
      {"Expression", ScriptBlock.Create("$_.RecordData.IPv4Address")} 
     }); 

我也可以通过两种做一个简单的获取主机的名称

或类似的计算表达式:

ps.AddParameter("Property", 
    new Hashtable 
    { 
     {"Name", "HostName"}, 
     {"Expression", ScriptBlock.Create("$_.hostname,")}, 
    }); 

我的问题是,我不能为我的生活弄清楚如何这两个同时结合起来。我强烈希望不要单独执行Select-Object命令,以便我可以确保主机名和IP引用相同的DNS记录。

我也尝试了在继承做这些,并收到错误消息:

Cannot bind parameter because parameter 'Property' is specified more than once. To provide multiple values to parameters that can accept multiple values, use the array syntax. For example, "-parameter value1,value2,value3" 

回答

3

连续做他们相当于做

... |Select-Object -Property {Name="RecordData";Expression={$_.RecordData.IPv4Address)} -Property {Name="HostName";Expression={$_.HostName}} 

这就是为什么你看到你的错误的。

您需要提供哈希表作为参数参数值的数组:

ps.AddParameter("Property", new object[] { 
    new Hashtable 
    { 
     {"Name", "RecordData"}, 
     {"Expression", ScriptBlock.Create("$_.RecordData.IPv4Address")} 
    }, 
    new Hashtable 
    { 
     {"Name", "HostName"}, 
     {"Expression", ScriptBlock.Create("$_.HostName")} 
    } 

}); 
+0

卫生署!非常明显的答案,明天会尝试第一件事,谢谢! – Bagelstein