PowerShellの条件付きパイプライン終了方法
2022-02-04 21:37:20
パイプラインがある条件で実行されたときに、パイプラインを終了させたいことがあります。今日は、PowerShell 2.0以降で動作する、比較的新しい方法を紹介します。まず、コードを見てください。
filter Stop-Pipeline
{
param
(
[scriptblock]
$condition = {$true}
)
if (& $condition)
{
continue
}
$_
}
do {
Get-ChildItem c:\Windows -Recurse -ErrorAction SilentlyContinue |
Stop-Pipeline { ($_.FullName.ToCharArray() -eq '\').Count -gt 3 }
} while ($false)
パイプラインはwindowsディレクトリを再帰的にスキャンし、新しく導入されたコマンドstop-pipelineはbooleanのconditionを引数に取り、conditionが成立するとパイプラインを終了させることができるようになりました。
この例では再帰の深さを制御しています。パイプラインはパスの中に3つのバックスラッシュを検出すると終了しますが、もちろん、スキャンするフォルダの深さを増やすために3からより大きな数値に整数を調整することができます。
このトリックは、Stop-Pipelineが条件を満たすとcontinue文でパイプラインを終了させるため、パイプラインをdoループに埋め込む必要があります。
少し不便に聞こえますが、魅力的に動作します。もう一つの使い方として、パイプラインを最大10秒間実行させるために
$start = Get-Date
$MaxSeconds = 10
do {
Get-ChildItem c:\Windows -Recurse -ErrorAction SilentlyContinue |
Stop-Pipeline { ((Get-Date) - $start).TotalSeconds -gt $MaxSeconds }
} while ($false)
関連
-
powershellで仮想マシンを作成する
-
Powershellを選択すべき10の理由(cmdを捨てるべき)
-
PowerShellタイムロギングスクリプト
-
PowerShellのエラートラッピングの話
-
ADユーザーのパスワード属性を一括で変更するPowerShellコード
-
PowerShellによるファイル名変更のバッチ処理例
-
コマンドライン履歴のコマンドをコピーするPowerShellメソッド
-
PowerShellでPrintManagementを使用してプリンターを管理する例
-
PowerShellでWPFを呼び出してクールなウィンドウを生成する例
-
PowerShellでF1ヘルプコマンドのアクセスをオンラインドキュメントに変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
UbuntuシステムでのPowerShellベースの利用を解説
-
nugetパッケージのファイル消失問題を解決するためのpowershellスクリプトを追加しました。
-
PowerShellでは配列のフィルタリングにmatch演算子を使用する
-
PowerShell 5.0の新機能が公開されました。
-
PowerShell で .NET Framework を使用して、グローバルアセンブリキャッシュにアセンブリを追加する。
-
PowerShelプログラム実行後、スクリプト自体を削除する方法
-
PowerShell DSC コンポーネント xExchange をリリースしました。
-
PowerShellによる印刷ジョブのクエリと削除のコード例
-
システム上の停止可能な全サービスを取得するPowershell
-
共有レジストリからユーザー設定を取得するためのPowershellスクリプト