-NotMatch
заставит Select-String
вернуть строки , которые не совпадают, это не работает на уровне файлов.
Чтобы сделать то, что вы хотите, запустите ALL файлы через Select-String
, а затем отфильтровывают те, у которых есть совпадения:
$result = Get-ChildItem -Path D:\ -Filter *.txt |Where-Object {
@($_ |Select-String -Pattern "Identifier" |Select-Object -First 1).Count -eq 0
} |Select-Object -ExpandProperty FileName
Мы берем первое возможное совпадение из рассматриваемого файла - если ничего не найдено, выражение массива будет пустым и Count -eq 0