PowerShellでForEach-Objectを終了させる方法
2023-10-10 02:33:40
質問
次のようなコードがあります。
$project.PropertyGroup | Foreach-Object {
if($_.GetAttribute('Condition').Trim() -eq $propertyGroupConditionName.Trim()) {
$a = $project.RemoveChild($_);
Write-Host $_.GetAttribute('Condition')"has been removed.";
}
};
質問1: ForEach-Objectを終了するにはどうしたらよいですか?私は "break" と "continue" を使ってみましたが、うまくいきません。
質問2: 私は、リストを
foreach
ループの中でリストを変更できることがわかりました。C#ではそのようなことはできません...。なぜPowerShellはそれができるのでしょうか?
どうすれば解決するの?
まず最初に
Foreach-Object
は
ではなく
実際のループと
break
を呼び出すと、その次の文にスキップするのではなく、スクリプト全体がキャンセルされます。
逆に
break
と
continue
は、実際の
foreach
ループの中で期待通りに動作します。
項目その1.を置くことで
break
の中に
foreach
ループを終了させることはできますが、パイプラインを停止させることはできません。このようなことをしたいようですね。
$todo=$project.PropertyGroup
foreach ($thing in $todo){
if ($thing -eq 'some_condition'){
break
}
}
項目その2。PowerShellでは、配列の中で配列を変更することができます。
foreach
ループでその配列を変更することができますが、その変更はループを抜けるまで有効になりません。例として以下のコードを実行してみてください。
$a=1,2,3
foreach ($value in $a){
Write-Host $value
}
Write-Host $a
PowerShellの作者がなぜこれを許可したのかについてはコメントできませんが、他のほとんどのスクリプト言語( パール , Python やシェル)でも同様の構成が可能です。
関連
-
[解決済み] PowershellでTimeZoneを設定する方法
-
[解決済み] インストールされたPowerShellのバージョンを確認する
-
[解決済み] PowerShellで「このシステムではスクリプトの実行が無効になっています」と言われる。
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
-
[解決済み] foreachループの現在の反復処理のインデックスを取得するにはどうすればよいですか?
-
[解決済み] PowerShellでコードをコメントアウトする方法とは?
-
[解決済み] IEnumerable<T>のforeachのLINQでの等価性
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み】PowerShellスクリプトを実行する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Invoke-Sqlcmd エラー : リモート DB サーバを呼び出すために powershell を実行すると、ユーザ xxxx のログインに失敗しました。
-
[解決済み] Get-ADUser -Identity
-
[解決済み] Get-ADUserとフィルタを含むForEach-Objectループ
-
[解決済み] PowerShellで遠隔地からファイルをコピーする
-
[解決済み] Base64の文字列をデコードするには?
-
[解決済み] Powershell ISE 内の別の PS1 スクリプトから PowerShell スクリプト PS1 を呼び出す
-
[解決済み] PowerShellでデータをCSVにエクスポートする方法は?
-
[解決済み] 'Connect-MsolService' はコマンドレット名として認識されません。
-
[解決済み] 実行中のPowerShellスクリプトからすべての環境変数を表示する
-
[解決済み] powershellでToStringを使用して日付をフォーマットする