我有一个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' }