tech.guitarrapc.cóm

Technical updates

PowerShell で SelectManyもどきが欲しい

PowerShellでは、IEnumerable[]は相性悪いわけですが、シーケンスを平坦にしたいものはしたく。

PowerShellの標準出力の配列は展開される特性を使うと、あたかも標準出力の配列は展開されるが平坦化してるように見えますがびみょーんです。

なので、Zipに続きSelectManyを書いてみました。だれかー、おしえてくだされ~。

https://github.com/guitarrapc/PowerShellUtil/blob/master/LINQ/New-Zip.ps1

コード

本コードは PowerShell 4.0 以上限定です

GitHubに公開しておきます。

https://github.com/guitarrapc/PowerShellUtil/blob/master/LINQ/New-SelectMany.ps1

サンプルとかはここに

https://gist.github.com/d76791ca0c058544d6a4

いつ使うの

久々にActiveDirectoryをちょろろんっと触ってるんですが、OUとか深くなった時のSearchBaseをDN, OUで自動生成しています。

が、しかしOUが深くなった時にみなさんどうしてるんですかね? OUを入力シーケンスとみなし時に、SearchBaseはフラットな階層として表現する必要があるので平坦化が欲しいと思うんですが....ということでそういう使い方してます。

対象のOUに対して、親OUが配列で入ってきたりして平坦化がほしくて。

ActiveDirectoryはモジュールを作ってコード化していますが、AD用のPowerShellモジュールの出来がひどいことこの上ないですね....拡張ラッパーを涙ながら作ってます。

まとめ

そろそろLinq to PowerShell。。。。じゃないや、PSLinqを真面目に書く必要がありそう。というかないとつらいです。

https://github.com/manojlds/pslinq