Несколько вещей.
Эта ошибка указывает, что ни ваш ниб, ни элемент управления внутри этого nib НЕ используют автоматическую компоновку.
$source = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\Ursprung_test'
$dest = 'c:\dest'
Get-ChildItem $source -filter *.txt -recurse | Select-String -List -Pattern "24BHD" | ForEach-Object {
Move-Item $PSItem.Path -Destination $dest
}
Редактировать: Этот пример лучше, только с использованием труб. Выходные данные Get-ChildItem передаются по каналу Select-String, который отфильтровывает файлы, содержащие «24BHD» в содержимом. Соответствующие файлы передаются в Move-Item. В приведенном выше примере я использовал Foreach-Object, потому что я думал, что Move-Item не может обработать вывод Select-String. В этом не было необходимости, потому что привязка параметров PowerShell прекрасно это решает.
Есть еще одна оговорка: если в структуре папок $ source присутствуют повторяющиеся имена файлов, Move-Item столкнется с конфликтом имен в папке $ dest
$source = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\Ursprung_test'
$dest = 'c:\dest'
Get-ChildItem $source -filter *.txt -recurse |
Select-String -List -Pattern "24BHD" |
Move-Item -Destination $dest
Подробнее о привязке параметров можно найти здесь : https://4sysops.com/archives/parameter-binding-in-the-powershell-pipeline/
Вы очень близки, но синтаксис foreach
не делает то, что вы думаете.
Вам необходимо использовать foreach ($item in $hans)
, где $hans
- это набор файлов, а $item
представляет каждый «файл» в массиве во время «цикла».
(имя переменной $item
может быть любым, это просто пример, который я использовал)
Свойство FullName
содержит полный путь к файлу, который необходим для для [ 117].
Затем используйте Move-Item
, если Select-String
возвращает совпадение:
$source = 'Z:\Documents\16_Med._App\Aufträge\RuheEKG_24HBP_Skript\Ursprung_test'
$destination = 'C:\Destination'
$pattern = '24BHD'
$hans = Get-ChildItem $source -filter *.txt -recurse
foreach($item in $hans) {
if (Select-String -list -pattern $pattern -path $item.fullname) {
Move-Item -Path $item.fullname -Destination $destination
}
}