如何将$ org与$ count一起放入数组?
像这个示例数组:
$myArray = @{
1="SampleOrg";
2="AnotherSampleOrg"
}
另一个例子:
$myArray = @{
$count="$org";
$count="$org"
}
foreach示例:
$count=0;get-organization | foreach {$count++; $org = $_.Name.ToString();write-host $count -nonewline;write-host " $org"}
$answer = read-host "Select 1-$count"
以上将显示:
1 SampleOrg
2 AnotherSampleOrg
Select 1-2:
之后我想做的是将数组用于交换机。
示例:
switch ($answer)
{
1 {$org=myArray[1]} #<-- or whatever that corresponds to "SampleOrg"
2 {$org=myArray[2]} #<-- or whatever that corresponds to "AnotherSampleOrg"
}
答案 0 :(得分:4)
看起来你混淆了数组和Hashtables。数组是有序的,并由数值索引。 Hashtables是关联的,并由任何定义相等的值索引。
这是数组语法
$arr = @(1,2,3)
这是Hashtable语法
$ht = @{red=1;blue=2;}
对于您的问题,以下内容将起作用
$orgs = @(get-organization | % { $_.Name })
这将创建一个基于0的数组,映射int - &gt; OrgName,所以
$orgs[$answer]
将获得正确的名称。或者,如果您使用的是基于索引的
$orgs[$answer-1]
注意,我删除了开关,因为没有理由。
答案 1 :(得分:4)
您必须在循环之前的某处初始化哈希表:
$myArray = @{}
并添加
$myArray.Add($count, $org)
到你的foreach循环。
编辑:关于hastable / array的讨论请参阅整个帖子;)我只是保留了原始帖子中变量的名称