Powershell在单个哈希(C#)中包含多个表达式
我正在尝试检索一些DNS记录数据,并希望返回主机名及其IPv4地址。在做了一些研究之后,我发现为了获得IPv4地址,我需要做一个计算表达式:Powershell在单个哈希(C#)中包含多个表达式,c#,powershell,dns,hashtable,C#,Powershell,Dns,Hashtable,我正在尝试检索一些DNS记录数据,并希望返回主机名及其IPv4地址。在做了一些研究之后,我发现为了获得IPv4地址,我需要做一个计算表达式: ps.AddParameter("Property", new Hashtable { {"Name", "RecordData"}, {"Expression", ScriptBlock.Create("$_.RecordData.IPv4Addr
ps.AddParameter("Property",
new Hashtable
{
{"Name", "RecordData"},
{"Expression", ScriptBlock.Create("$_.RecordData.IPv4Address")}
});
ps.AddParameter("Property",
new Hashtable
{
{"Name", "HostName"},
{"Expression", ScriptBlock.Create("$_.hostname,")},
});
我还可以通过以下两种方式获取主机名:
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"
接二连三地做这些事就相当于
... |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")}
}
});
接二连三地做这些事就相当于
... |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")}
}
});