回答:
-Contains
オペレータは、サブストリングの比較を行わないと、試合は完全な文字列でなければなりませんし、コレクションを検索するために使用されます。
リンクしたドキュメントから:
-Contains説明:包含演算子。参照値のコレクションに単一のテスト値が含まれているかどうかを判断します。
指定した例では、文字列アイテムを1つだけ含むコレクションを操作しています。
リンクしたドキュメントを読むと、この動作を示す例が表示されます。
例:
PS C:\> "abc", "def" -Contains "def"
True
PS C:\> "Windows", "PowerShell" -Contains "Shell"
False #Not an exact match
あなたが欲しいのは-Match
演算子だと思います:
"12-18" -Match "-"
どちらが戻るかTrue
。
重要:コメントとリンクされたドキュメントで指摘されているように、-Match
オペレーターは正規表現を使用してテキストマッチングを実行することに注意してください。
Contains
もう一度読んだので、Powershellオペレーターと.Contains()
.NET String
メソッドの違いを明確にする必要があると思います。
-Match
正規表現を使用します。つまり、文字列パラメーターは正規表現であり、通常の文字列ではありません。たとえば、"hello" -Match "."
は"."
正規表現である「。」であるため、trueを返します。任意の文字に一致します。文字列にフルストップが含まれているかどうかを確認するには:"hello" -Match "\."
(falseを返します)
-Contains
実際にはコレクション演算子です。コレクションにオブジェクトが含まれている場合はtrueです。文字列に限定されません。
-match
そして-imatch
キャプチャで使用する正規表現文字列の整合器、およびセット自動変数です。
-like
、-ilike
SQLに似たマッチャーです。
like
最高、または少なくとも最も簡単です。match
正規表現の比較に使用されます。リファレンス:https : //docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-6
"12-18".Contains("-")