我正在尝试检索一些DNS记录数据,并希望找回主机名及其IPv4地址。在做了一些研究后,我发现为了获得IPv4地址,我需要做一个计算表达式:
ps.AddParameter("Property",
new Hashtable
{
{"Name", "RecordData"},
{"Expression", ScriptBlock.Create("$_.RecordData.IPv4Address")}
});
我也可以通过直截了当地获取主机名:
ps.AddParameter("Property", "HostName");
或类似于计算的表达式:
ps.AddParameter("Property",
new Hashtable
{
{"Name", "HostName"},
{"Expression", ScriptBlock.Create("$_.hostname,")},
});
我的问题是我不能为我的生活弄清楚如何同时结合这两者。我非常希望不要单独执行Select-Object命令,这样我就可以确保Hostname和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"
答案 0 :(得分: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")}
}
});