2013-11-26 58 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