
powershellにおける"foreach"の動作について2点質問です。
動作環境はWindows7 SP1。
powershellのバージョンは以下の通りです。
PS C:\> $PSVersionTable
Name Value
---- -----
CLRVersion 2.0.50727.5472
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
PS C:\>
【サンプル1】
test1.ps1
--------------------
$WEEK = "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"
foreach ($x in $WEEK) {
if ( $x -notmatch '^T' ) { continue }
$x
}
--------------------
実行結果は
Tuesday
Thursday
となります。
【サンプル2】
test.lst
--------------------
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
--------------------
test2.ps1
--------------------
Get-Content ".\test.lst" | foreach {
$x = $_
if ( $x -notmatch '^T' ) { continue }
$x
}
--------------------
実行すると、何も出力されていません。
"notmatch"を"match"に変えて実行してみると、
Sunday
Monday
と出力されます。
どうも"continue"でループを抜けてしまっている様です。
■質問1
サンプル1とサンプル2、やっている内容は同じだと思っていたのですが、何故こういう違いが起こるのでしょうか?
また、サンプル1の"foreach"を"ForEach-Object"に変えて実行すると、
「式またはステートメントのトークン 'in' を使用できません。」
とエラーになってしまいます。
aliasを切ってあるはずなのですが・・・
PS C:\> alias foreach
CommandType Name Definition
----------- ---- ----------
Alias foreach ForEach-Object
PS C:\>
■質問2
同じコマンドを実行しているはずなのに、こういう事が起こるのでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
「win11-23H2」を「win11-24H2...
-
[teraterm] waitコマンドで停止...
-
VBscriptが起動しない?
-
「読み取りと実行」と「読み取...
-
VBAを時間指定で自動実行
-
Excel VBA ステップインが途中...
-
エクセル フォルダの画像を画...
-
COBOLのイニシャライズとバリュ...
-
バッチファイルで以下のような...
-
【VB.NET】exeを実行すると「発...
-
NASに移したBATファイルからセ...
-
バッチファイルが不正終了して...
-
WSH.Run の処理内容をテキスト...
-
三菱ラダーについて教えて下さい。
-
PDFファイルを開き、印刷し、閉...
-
Access の VBA 実行中に他の操...
-
シェルからCで作った実行ファイ...
-
exeファイルを実行するとコマン...
-
ネットワーク名が見つかりません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
「win11-23H2」を「win11-24H2...
-
[teraterm] waitコマンドで停止...
-
「読み取りと実行」と「読み取...
-
これってパソコンの最適化が完...
-
バッチファイルの内容を表示さ...
-
exeファイルを実行するとコマン...
-
複数のbatファイルを自動実行し...
-
VBscriptが起動しない?
-
ExcelのVBAが特定のPC上でのみ...
-
Excel(エクセル) VBA プロシー...
-
Windows System32 Security Hea...
-
PDFファイルを開き、印刷し、閉...
-
VBScriptでコマンドプロンプト...
-
batからexeを実行し戻り値を受...
-
Access の VBA 実行中に他の操...
-
Excel VBA ステップインが途中...
-
【VB.NET】exeを実行すると「発...
-
バッチファイルが不正終了して...
-
VBA 既に開いているBookに継続...
おすすめ情報