if
パイプライン内で使用しようとしています。
where
(alias ) フィルターがあることは知っていますが?
、特定の条件が満たされた場合にのみフィルターをアクティブにしたい場合はどうすればよいですか?
たとえば、次のようになります。
何かを得る | ? {$_.someone -eq 'somespecific'} | フォーマットテーブル
if
フィルターのオン/オフを切り替えるためにパイプライン内で使用する方法は? 出来ますか?それは理にかなっていますか?
ありがとう
明確にするために編集
パイプラインがないと、次のようになります。
if($フィルター) { 何かを得る | ? {$_.someone -eq 'somespecific'} } そうしないと { 何かを得ます }
ANSWERのriknikの後に編集
私が探していたものを示すばかげた例。変数に格納されたデータの非正規化テーブルがあり$data
、一種の「ドリルダウン」データ フィルタリングを実行したいとします。
関数データフィルタ { param([スイッチ]$先祖、 [スイッチ]$親、 [スイッチ]$子、 [文字列]$myancestor, [文字列]$myparent, [文字列]$mychild, [配列]$data=[]) $データ | ? { (!$ancestor) -or ($_.ancestor -match $myancestor) } | ? { (!$parent) -or ($_.parent -match $myparent) } | ? { (!$child) -or ($_.child -match $mychild) } | }
たとえば、特定の親のみでフィルタリングしたい場合:
datafilter -parent -myparent 'myparent' -data $mydata
これは、非常にエレガントでパフォーマンスが高く、簡単に悪用できる方法?
です。を使って同じことをやってみれば、私のif
言いたいことが理解できるでしょう。