我是新來的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