Loops 在Powershell的循环中使用更改变量

Loops 在Powershell的循环中使用更改变量,loops,powershell,variables,Loops,Powershell,Variables,我是PowerShell的新手,试图找到一个简化脚本的解决方案 问题:我需要在循环中用变量名中的数字更新几个字段。现在我使用“if语句”(见下文)完成了这项工作,但我需要更新许多字段,并寻找一种更简单的方法 下面是示例脚本: #START OF SCRIPT Import-Module ActiveDirectory $field_value_1 = "" $field_value_2 = "" $field_value_3 = "" $user_1 = "Dave" $user_2 = "

我是PowerShell的新手,试图找到一个简化脚本的解决方案

问题:我需要在循环中用变量名中的数字更新几个字段。现在我使用“if语句”(见下文)完成了这项工作,但我需要更新许多字段,并寻找一种更简单的方法

下面是示例脚本:

#START OF SCRIPT
Import-Module ActiveDirectory

$field_value_1 = ""
$field_value_2 = ""
$field_value_3 = ""

$user_1 = "Dave"
$user_2 = "Chris"
$user_3 = "Bob"

for ($i=1;$i-le 3;$i++){

if($i -eq 1){$field_value_1 = Get-ADUser $user_1 | Select -Expand Name}
elseif($i -eq 2){$field_value_2 = Get-ADUser $user_2 | Select -Expand Name}
elseif($i -eq 3){$field_value_3 = Get-ADUser $user_3 | Select -Expand Name}
}

write-host "These are the values: $field_value_1, $field_value_2, $field_value_3"

#END OF SCRIPT
我想要的是在循环中添加类似的内容,而不是if语句:

$field_value_$i = Get-ADUser $user_$i | Select -Expand Name
因此,基本上,
$field\u value\u$i
转换为
$field\u value\u 1
,并在下一个循环中转换为
$field\u value\u 2
等。
$user\u x
字段也是如此

结果是在循环1中,它将从
$user\u 1
(Dave)加载值,查找Active Directory名称(Dave Cross),并将其写入
$field\u value\u 1
变量。在下一个循环中,它将从
$user\u 2
(Chris)加载值,查找Active Directory名称(Chris Bowes),并将其写入
$field\u value\u 2
变量,依此类推

有人知道如何做到这一点吗?我看了动态变量,但不知道怎么做

更新 获取信息的方法是使用数组。下一个问题是将结果写入表单上的文本字段,这仅在使用
iex

Invoke-Expression  "`$textfield$i.Text = `$var[$i]"

这将使用命令中的$i从数组中提取信息,并将其写入正确的文本字段。您必须使用`才能将$as文本读取。Invoke_表达式将执行全文命令:-)

数组有什么问题<代码>$users='Dave','Chris','Bob'$field|values=@($users |%{Get ADUser$| Select-Expand Name})Hi,感谢您的回答。我研究了数组,但我认为它不能满足我的需要,因为从数组中提取信息并将其放入字段\值\ 1、字段\值\ 2和字段\值\ 3变量中,会引起同样的问题。我之所以需要将它们分开,是因为最终,我需要将这些字段值写入表单上的文本字段中。如果我没有正确理解你的帖子,我深表歉意。我做了更多的测试并找到了使用数组的方法:-)更进一步。使用:
$field\u values[$i]
,可以使用一个变化的变量从数组中提取信息。我要寻找的最后一步类似于写入文本字段,比如:
$Form\u Textfield\u$I.text=$field\u values[$I]
,但是
$Form\u Textfield\u$I
当然会失败。。。