2017-09-24 93 views
1

我有一個PowerShell腳本,其中包含一個$arrayip$hash。我想將$arrayip的每個IP地址添加到我的$hash哈希表中作爲名稱或密鑰。將每個陣列對象添加到HashTable中

我的錯誤的語法:

$arrayip = @("192.168.1.1", "192.168.1.2", "192.168.1.3") 
$hash = @{ 
    name = "Name" 
    $arrayip = "Is a server IP" 
} 

我壞結果:

 
PS C:\> $hash 

Name       Value           
----       -----           
name       Name            
{192.168.1.1, 192.168.1.2, ... Is a server IP 

image result

+4

什麼是你想要的結果?你希望地址是你的散列表中的鍵或值嗎?這是一個根本的區別。一旦擁有這些地址,你想要做什麼? –

+0

是的先生,我想添加每個IP作爲一個關鍵,並且值是相同的 – SchoolforDesign

回答

0

這將創建一個散列的數組,但是,你仍然需要思考在hash中放入「name」屬性的內容。

# declare array of ip hashes 
$iphashes = @(); 
# for each array ip 
for($i = 0; $i -lt $arrayip.Count; $i++){ 
    $hash = @{ 
     name = "Name"; 
     ip = $arrayip[$i]; 
    } 
    # add hash to array of ip hashes 
    $iphashes += $hash; 
} 
+1

當我在控制檯中鍵入$哈希,爲'IP'返回一個值,我想爲每個值添加每個IP,例如: ip ----- 192.168.1.1 ip ----- 192.168.1.2 ip ----- 192.168.1.3 name ----- name – SchoolforDesign

1

這是你的意思嗎?

$arrayips = @("192.168.1.1", "192.168.1.2", "192.168.1.3") 

$foreachhash = foreach($arrayip in $arrayips) 
{ 
    $hash = [ordered]@{'Name'=$arrayip; 
         'Is a server IP' = $arrayip 
         } #end $hash 

    write-output (New-Object -Typename PSObject -Property $hash) 
} #end foreach 

$foreachhash 

產地:

enter image description here

謝謝你,蒂姆。

+0

控制檯中的$ hash鍵包含一個值!,i想要爲每個IP添加每個密鑰,例如: ip ----- 192.168.1.1 ip ----- 192.168.1.2 ip ----- 192.168.1.3名稱-----名稱 – SchoolforDesign

+1

我有更新了我的答案以在名稱列下添加IP。我還添加了[排序],以便姓名列始終位於第一位。 –

+0

你使用這個技巧:寫輸出(新對象 - 類型名稱PSObject - 屬性$哈希)... 請你可以在你的控制檯寫$哈希? 那你看到了什麼? (名稱和服務器IP) 現在我想添加每個ips作爲密鑰或$ hash的名稱 我不想要New-Object sir – SchoolforDesign

0

爲了增加數組元素作爲鍵到現有哈希表,你可以做這樣的事情:

$arrayip = '192.168.1.1', '192.168.1.2', '192.168.1.3' 
$hash = @{ 'Name' = 'Name' } 

$arrayip | ForEach-Object { 
    $hash[$_] = 'Is a server IP' 
}