单个哈希中的 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")}
    }

});