PowerShellの展開は、私を夢中にさせています。
交換受信者からメールアドレスを取得するための次のコードがあります。配列からアイテムを削除する機能が必要な場合に多くの人から提案されているため、私は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
$ aliasesの値は、関数の最後では正しいですが(つまり、x個の電子メールアドレスを含み、タイプArrayListです)、返された後、System.Object []になり、2x個のエントリがあります。x Int32の後にx文字列が続きます(つまり、{0、1、bob @ here、bob @ there})。なぜこれが発生するのですか?ArrayListをそのまま維持するにはどうすればよいですか?ArrayListを使用するのは間違っていますか?
好奇心から、PSの展開に起因するすべての質問/問題で、その目的は何ですか?PowerShellの大きな利点は、テキストの投影ではなくオブジェクトを直接操作できることです。残念ながら、どのような種類のオブジェクトを操作しているかはわかりません。確認しても、その形状が維持されていないようです。数行のコードより。
--編集関数はPSObjectの一部として呼び出されます
$get_aliases = { ... }
$obj | Add-Member -MemberType ScriptProperty -Name Aliases -Value $get_aliases -SecondValue $set_aliases