私はこの文字列変数を持っています:
$path = "C:\Windows"
私はこの文字列の配列を持っています:
$badDir = "windows",
"i3\ic",
"program",
"system",
"pagefile.sys",
"system",
"swapfile.sys",
"sourcecd",
"backup",
"wwwroot",
"users",
"desktop",
"documents"
$path
配列の$badDir
値のどこかに文字列が含まれているかどうかを評価しようとしています。たとえば、私の$path
値がC:\Windows
であり、配列の要素の1つがであるためwindows
、「Windows」が一致し、次の評価がtrueを返す必要があります。
$badDir -Match $path.ToLower()
ただし、falseが返されます。私はここで間違って何をしていますか?
ありがとう!
私はここで間違って何をしていますか?
あなたは間違ったことをテストしていて、間違った方法でテストしています。
$ path値は "C:\ Windows"であり、$ badDirには 'c:\ windows'が含まれておらず、( "c:\ windows"を含む文字列)が含まれていないため、評価はfalseを返す必要があります。
正規表現を使用したくない場合は、$ badDirをループして各アイテムをテストし、結果を確認する必要があります。
$path = "C:\Windows"
$badDir = "windows",
"i3\ic",
"program",
"system",
"pagefile.sys",
"system",
"swapfile.sys",
"sourcecd",
"backup",
"wwwroot",
"users",
"desktop",
"documents"
$badDirmatch = $badDir.Where({$path.ToLower().contains($_)}, 'First').Count -as [bool]
.Where()
はより高速で| Where-Object
あり、「最初の」カットオフは一致時に即座に停止し、残りのすべての要素をテストするわけではありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加