2017-07-24 112 views
0

我試圖檢索一些DNS記錄數據,並希望獲取主機名和它們的IPv4地址。之後做一些研究,我發現,爲了獲得IPv4地址,我需要做一個計算表達式:單哈希(C#)Powershell多個表達式

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" 

回答

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

}); 
+0

衛生署!非常明顯的答案,明天會嘗試第一件事,謝謝! – Bagelstein