Posto la soluzione a cui sono arrivato, magari torna utile a qualcuno :)
$random = New-Object System.Random
foreach ($i in (1..5)) {
invoke-Expression('${list' + $i + '} = @()')
do {
$casuale = $random.Next(1,11)
if (invoke-Expression('${list' + $i + '} -notcontains $casuale ')) {
invoke-Expression('${list' + $i + '} += $casuale ')
}
}
while ( invoke-Expression('${list' + $i + '}.count -lt 10'))
}
Se lancio il cmdlet get-variable l*
ottengo i cinque array e verificandone il contenuto ciascuno di essi contiene esattamente i 10 valori da 1 a 10.
Mi è rimasta tuttavia una curiosità. Ai fini del debug cercavo un modo per verificare come vengono "risolte" le variabili.
Pensavo che tee-object potesse venirmi incontro e ho trovato questo articolo
http://www.chinhdo.com/20100105/powershell-invoke-expression-tee-object/
Ho fatto una semplice prova
$lista = @()
$i = 1
$casuale = 100
invoke-Expression "'${lista' + $i + '} -notcontains $casuale ' | tee-object -variable prova"
e mi sarei aspettato che il risultato fosse
$lista1 -notcontains 100
mentre invece ottengo solo
-notcontains 100
Dove sbaglio?