将每个数组对象添加到HashTable

我有一个PowerShell脚本,它包含$arrayip$hash 。 我想从$arrayip添加每个IP地址作为$hash散列表中的名称或键。

我错误的语法:

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

对我来说结果不好:

 PS C:\> $ hash

名称值                                           
 ---- -----                                           
名称名称                                            
 {192.168.1.1,192.168.1.2,...是一个服务器IP

图像结果

这将创建散列数组,但是,您仍然需要考虑在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; } 

你是这个意思吗?

 $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 

生产:

在这里输入图像描述

谢谢,Tim。

为了将数组元素作为键添加到现有的哈希表,你可以这样做:

 $arrayip = '192.168.1.1', '192.168.1.2', '192.168.1.3' $hash = @{ 'Name' = 'Name' } $arrayip | ForEach-Object { $hash[$_] = 'Is a server IP' }