Lo srotolamento del powershell mi sta facendo impazzire.ArrayList Srotolare
Ho il seguente codice per recuperare indirizzi e-mail da un destinatario di Exchange. Sto usando ArrayList perché è suggerito da molte persone quando vuoi la possibilità di rimuovere elementi dall'array.
$aliases = New-Object System.Collections.ArrayList
$smtpAddresses = (Get-Recipient $this.DN).EmailAddresses | ?{$_.Prefix.ToString() -eq 'smtp' }
foreach ($smtpAddress in $smtpAddresses) {
$aliases.Add($smtpAddress.SmtpAddress)
}
return $aliases
Il valore di $ alias è corretta, alla fine della funzione (cioè conterrà indirizzi e-mail X ed è di tipo ArrayList), ma dopo il ritorno diventa System.Object [] e ha 2x voci. C'è x Int32 seguito da x Strings (cioè {0, 1, bob @ qui, bob @ there}). Perché questo accade e come mantenere intatto il mio ArrayList? Ho sbagliato ad usare ArrayList?
Per curiosità, con tutte le domande/problemi derivanti dalla PS srotolamento, qual è il suo scopo? Il grande vantaggio di PowerShell è che lavori direttamente con gli oggetti invece delle loro proiezioni testuali, sfortunatamente, non so mai con che tipo di oggetto sto lavorando - e anche quando controllo, non sembra mantenere la sua forma per più di poche righe di codice.
- Modifica la funzione viene richiamata come parte di un PSObject
$get_aliases = { ... }
$obj | Add-Member -MemberType ScriptProperty -Name Aliases -Value $get_aliases -SecondValue $set_aliases
@bob Felice di sentirlo. Continua così con le tue esplorazioni! Ci vuole un po 'di tempo per trasformare la mente in lavoro in modalità * pipeline *. Quando ciò accade, inizierai ad apprezzare ciò che PowerShell sta facendo per te. –