Мне просто нужно было заставить это работать и придумал следующее:
$InServerName = 'SomeServerNameorIPAddress'
$InFilePath = '\Sharename\SomePath\'
$InFileName = 'Filename.ext'
$OutServerName = 'SomeServerNameorIPAddress'
$OutFilePath = '\Sharename\SomePath\'
$OutFileName = 'Filename.out'
$InFile = -join('\\',$InServerName,$InFilePath,$InFilename)
$OutFile = -join('\\',$OutServerName,$OutFilePath,$OutFilename)
$FindStr = 'some string to match on'
$CompareStr = [scriptblock]::Create($FindStr)
$CompareStr
Get-Content $InFile | Where-Object {$_ -notmatch $CompareStr} | Set-Content $OutFile
Get-Content $OutFile
Ключевым моментом является то, что для 'Where-Object', использующего блок скрипта (как обозначено фигурными скобками), требуется объявить переменную в событии создания блока скрипта, следовательно,
$CompareStr = [scriptblock]::Create($FindStr)
линия.
Структурируя его таким образом, можно создать функцию, передать ей текстовую строку для частичного совпадения, выполнить создание блока сценария с переданным значением и заставить его работать правильно.
Ответы выше не правильно объясняют, как передать значение, которое будет заменено в переменной.