单个哈希中的 Powershell 多个表达式 (C#)
Powershell multiple expressions in single hash (C#)
我正在尝试检索一些 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 命令,这样我可以确保主机名和 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")}
}
});
我正在尝试检索一些 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 命令,这样我可以确保主机名和 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")}
}
});