2009-03-27 6 views
17

Sto cercando di dichiarare la lista in PowerShell, in cui la persona è definita utilizzando Add-Type:PowerShell. Dichiarare elenco generico con classe definita con 'Add-Type'

add-type -Language CSharpVersion3 -TypeDefinition @" 
    public class Person 
    { 
     public Person() {} 

     public string First { get; set; } 
     public string Last { get; set; } 
    } 
"@ 

Questo funziona bene:

New-Object Person 
New-Object System.Collections.Generic.List``1[System.Object] 

Ma questa linea non riesce:

New-Object System.Collections.Generic.List``1[Person] 

Cosa c'è di sbagliato qui?

+0

PowerShell 2.0, presumo? –

+0

Sì, funziona con 2.0 – alex2k8

+1

Per chiunque altro si stia chiedendo, la riga che non funziona (sopra) funziona in Powershell 3.0 (anche se avevo bisogno di rimuovere "-Language CSharpVersion3" perché l'ho eseguito su Windows Server 2012). –

risposta

8

Beh, stavo cercando di creare un elenco di FileStream oggetti e questa era la mia soluzione (sulla base di this link - che descrive in realtà un modo per risolvere il problema):

$fs = New-Object 'System.Collections.Generic.List[System.IO.FileStream]' 
$sw = New-Object 'System.Collections.Generic.List[System.IO.StreamWriter]' 
$i = 0 
while ($i < 10) 
{ 
    $fsTemp = New-Object System.IO.FileStream("$newFileName",[System.IO.FileMode]'OpenOrCreate',[System.IO.FileAccess]'Write') 
    $fs.Add($fsTemp) 
    $swTemp = New-Object System.IO.StreamWriter($fsTemp) 
    $sw.Add($swTemp) 
    $i++ 
} 

Speranza che aiuta!