【问题标题】:Powershell multiple expressions in single hash (C#)单个哈希中的 Powershell 多个表达式(C#)
【发布时间】:2017-07-24 20:58:03
【问题描述】:

我正在尝试检索一些 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"

【问题讨论】:

    标签: c# powershell dns hashtable


    【解决方案1】:

    连续做就相当于做

    ... |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")}
        }
    
    });
    

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-02
      • 1970-01-01
      • 2013-06-06
      • 2017-04-24
      • 2023-04-08
      • 1970-01-01
      相关资源
      最近更新 更多