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言いたいことが理解できるでしょう。