Powershellアンロールが私を狂わせてしまいます。ArrayList Unrolling
私は交換者から電子メールアドレスを取得するためのコードを持っています。 ArrayListを使用しています。なぜなら、配列から項目を削除する機能が必要なときに、多くの人がこれを示唆しているからです。
$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
エイリアスが関数の最後に正しい$の値(すなわち、Xのメールアドレスが含まれ、型のArrayListである)が、復帰後、それはSystem.Objectの[]になり、2倍のエントリを有します。 x Int32の後ろにx文字列(すなわち、{0,1、bob @ here、bob @ there})が続きます。なぜこれが起こり、ArrayListをそのまま維持するのですか? ArrayListの使用に間違っていますか?
PSのアンローリングに起因するすべての質問/問題があり、その目的は何か? PowerShellの大きな利点は、テキスト投影の代わりにオブジェクトを使って直接作業することです。残念ながら、私がどのようなオブジェクトを扱っているのかわかりません。チェックしても、より多くのいくつかのコード行よりも。
- どのようにあなたが$aliases
を返却している編集 は、関数がPSObject
$get_aliases = { ... }
$obj | Add-Member -MemberType ScriptProperty -Name Aliases -Value $get_aliases -SecondValue $set_aliases
@bob嬉しいです。あなたの探検と一緒にそれを保つ! *パイプラインモードで動作するように心を歪めるには、少し時間がかかります。一度それが考えられたら、PowerShellがあなたのためにやっていることを理解し始めるでしょう。 –