Ты почти у цели. Проблема с деталью после ForEach-Object
.
Поскольку вы не ищете строку с помощью регулярных выражений, я бы предложил добавить -SimpleMatch
в командлет Select-String
.
Попробуйте ниже:
$sourceFolder = 'C:\Users\XXXXX\Desktop\Folder'
$destination = 'C:\Users\XXXXX\Desktop\Folder2'
(Get-ChildItem -Path $sourceFolder -Filter '*.html' -Recurse | Select-String -Pattern 'WTSE' -SimpleMatch) |
Move-Item -Destination $destination
Командлет Move-Item может принимать массив путей, а также принимать входные данные конвейера, поэтому здесь нет необходимости использовать ForEach-Object
.
Примечание. Я использую скобки вокруг первой части (Get-ChildItem ... -SimpleMatch)
. Это предотвращает ошибку, что процесс не может открыть файл, потому что он используется