Мені просто потрібно було працювати, і я придумав таке:
$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
Ключовим моментом є те, що "Де-Об'єкт", що використовує блок скриптів (позначений фігурними дужками), вимагає оголосити змінну в події створення блоку скрипту, отже
$CompareStr = [scriptblock]::Create($FindStr)
рядок.
Структурувавши його таким чином, можна створити функцію, передати їй текстовий рядок, щоб частково збігатися, виконати створення блоку скриптів із переданим значенням та дозволити йому правильно працювати.
Наведені вище відповіді неправильно пояснюють, як передавати значення, яке слід замінити в змінній.