2013-11-26 35 views
1

所以我得到这个代码:PowerShell的自动变量

$t1, $t2, $t3, $t4, $t5, $t6, $t7, $t8, $t9, $t10, $t11 = $list[0].split(" ") 

,但实在是太多了,我想我可以自动$t变量的创建。 正确的程序如何?与循环,但具有相同的结果。

for ($i=0;$i -le 21; $i++) { 
    $objResult += New-Object -TypeName PSObject -Property @{"C$i" = ($list[0].split(" "))[$i]} 
} 

set-variable -name "T$i" -value ($list[0].split(" "))[$i] 
+4

老实说?在这里使用一个数组。如果你的变量名实际上是'$ t1','$ t2'等,那么从名字中学到的东西并不是什么有趣的东西(相对于'$ id','$ name'等等),你也可以使用数组。 – Joey

回答

1

如果这些都是简单的变量,Set-Variable完美的作品。像这样:

for ($i = 0; $i -lt 3; $i++) { 
set-variable -name "test$i" -value $i 
} 

$test0 
$test1 
$test2 

PS > .\test.ps1 
0 
1 
2 

如果您正在寻找具有较为复杂的变量(如例如COM对象)的工作,然后New-Object是你所需要的。

+0

是我会喜欢对象,但是: 'for($ i = 0; $ i -lt 22; $ i ++){ $ objResult + = New-Object -TypeName PSObject -Property @ { “test $ i”= ($ list [0] .split(“”))[$ i] } }' 我得到了:只有最后一个属性:test22,它并没有保存它们全部。 'TypeName:System.Management.Automation.PSCustomObject Name MemberType Definition ---- ---------- ---------- ..... test0 NoteProperty System.String test0 = 1384630490' – Xao