Powershell açma işlemi beni deli ediyor.ArrayList Kaydı
Ben bir değişim alıcısına e-posta adreslerini almak için aşağıdaki kodu var. ArrayList kullanıyorum çünkü birçok kişi tarafından önerildiğinden, diziden öğeleri kaldırabiliyorsunuz.
$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
takma işlevi sonunda doğru $ değeri (yani X-posta adreslerini içeren ve tip ArrayList) ama döndükten sonra bu System.Object [] olur ve 2x girişi bulunmaktadır. Orada x Int32'ler ve ardından x Strings (yani {0, 1, bob @ here, bob @ there}). Bu neden oluyor ve ArrayList'imi nasıl koruyabilirim? ArrayList kullanmak için yanlış mıyım? Meraktan
tüm sorular/sorunlar PS unrolling kaynaklanan ile, amacı nedir? Powershell'in büyük yararı, metinsel projeksiyonları yerine doğrudan nesnelerle çalışmanızdır, ne yazık ki, ne tür bir nesne ile çalıştığımı asla bilmem - ve hatta kontrol ettiğimde bile, şeklini daha fazla tutmuyor gibi görünüyor. birkaç satırdan daha fazla.- Nasıl $aliases
iade edilir düzenleme işlevi PSObject
$get_aliases = { ... }
$obj | Add-Member -MemberType ScriptProperty -Name Aliases -Value $get_aliases -SecondValue $set_aliases
@bob Bunu duyduğuma sevindim. Keşiflerinle devam et! Zihni * boru hattı * modunda çalışmaya zorlamak biraz zaman alır. Bu, PowerShell'in sizin için neler yaptığını takdir etmeye başladığınıza karar verir. –