我是新来的PowerShell脚本和不知道如何实现如下:如何使用FOR循环变量来帮助定义另一个变量
$finalArray = @()
$tempArray0 = 'A'
$tempArray1 = 'B'
$tempArray2 = 'C'
FOR (i=0; i -eq 5; i++) {$finalArray += $tempArray[i]}
$finalArray
输出应该是:
A
B
C
我是新来的PowerShell脚本和不知道如何实现如下:如何使用FOR循环变量来帮助定义另一个变量
$finalArray = @()
$tempArray0 = 'A'
$tempArray1 = 'B'
$tempArray2 = 'C'
FOR (i=0; i -eq 5; i++) {$finalArray += $tempArray[i]}
$finalArray
输出应该是:
A
B
C
如果变量名本身就是变量,你必须使用Get-Variable
cmdlet来检索其值:
$finalArray = @()
$tempArray0 = 'A'
$tempArray1 = 'B'
$tempArray2 = 'C'
for($i=0; $i -le 2; $i++) {
$finalArray += (Get-Variable "temparray$i" -ValueOnly)
}
$finalArray
如果はNT到创建变量与变量名,使用New-Variable
的cmdlet:
$Values = 'A','B','C'
for($i = 0; $i -lt $Values.Count; $i++){
New-Variable -Name "tempvalue$i" -Value $Values[$i]
}
这将导致:
PS C:\> $tempvalue1
B
虽然以上将解决例如你呈现,我可以考虑很少的情况,在这种情况下你不会更好地使用[hashtable]
而不是变量变量名 - 它们通常是过于复杂的,并且无论如何你最终会得到不必要的代码,因为你需要计算吃变量名至少两次(在创建过程中,再次读取值时)。
从评论,这听起来像你试图为密码生成器生成输入。这可以大大简化,而不诉诸于变量变量名称:
# Create a hashtable and generate the characters
$CharArrays = @{
Letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()
Numbers = 0..9
}
# Generate some letters for the password
$PasswordChars = $CharArrays['Letters'] |Get-Random -Count 10
# Generate a few digits
$PasswordChars += $CharArrays['Numbers'] |Get-Random -Count 4
# Shuffle them around a bit
$PasswordChars = $PasswordChars |Sort-Object {Get-Random}
# Create your password
$Password = $PasswordChars -join ''
完美的thx,我可以在for循环中使用相同的Get变量来创建3个tempArrays? “$ tempArray(Get-Variable $ i -ValueOnly)”=新对象PSCustomObject – veggyaurus
@veggyaurus更新回答 –
冠军!谢谢, – veggyaurus
初始化数组首先出循环,然后您可以添加更多的元素。 $ finalArray =新对象System.Collections.Generic.List [System.Object] – Junaid
对不起,忘了添加我已经这样做了,将编辑最初的帖子来显示我有什么。 – veggyaurus
[从CSV创建变量]可能的重复(http://stackoverflow.com/questions/40477171/create-variable-from-csv) – TessellatingHeckler