Sto faticando un po 'a rimuovere la prima riga (elemento ID) di un array.PowerShell Rimuovi elemento [0] da un array
$test.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
per elencare tutte le opzioni che ho provato ,$test | gm
e afferma chiaramente:
Remove Method void IList.Remove(System.Object value)
RemoveAt Method void IList.RemoveAt(int index)
Così quando provo $test.RemoveAt(0)
ottengo l'errore:
Exception calling "RemoveAt" with "1" argument(s): "Collection was of a fixed size."At line:1 char:1
+ $test.RemoveAt(1)
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NotSupportedException
Così ho finalmente trovato here che il mio array deve essere del tipo System.Object
per poter utilizzare $test.RemoveAt(0)
. È buona pratica dichiarare tutti gli array all'inizio della sceneggiatura come una lista? O è meglio convertire gli array con $collection = ({$test}.Invoke())
in un elenco più avanti quando questa funzionalità è necessaria?
Quali sono i pro ei contro di entrambi i tipi? Grazie per l'aiuto.
In seguito, questo ha fatto il trucco per me. Ed è bello e conciso. – Spikee
Ciò può comportarsi in modo errato se la matrice contiene valori duplicati. –
@RonMacNeil, buon punto. Ho aggiornato la mia risposta. –