файл обновления powershell во вложенных папках, если он уже существует

Не могу поверить, что это так сложно, как мне кажется.

У меня есть папка на общем сервере. В этой папке есть несколько подпапок, которые могут содержать или не содержать файл, который я хочу перезаписать последней версией.

Я сделал много поиска в Google и решил, что приведенная ниже команда даст мне то, что я хочу:

Get-ChildItem \\server1\websites\website\xml -Name "description-15240.txt" -Recurse | Copy-Item ".\description-15240.txt" -Destination $_.fullname

... но это не так.

Итак, я разбиваю команду на части и обнаруживаю, что Get-ChildItem возвращает только путь к файлу ИЗ корня параметра -Name, т.е.

1\бесконечный\description-15240.txt 68\бесконечный\description-15240.txt 79\бесконечный\description-15240.txt 80\бесконечный\description-15240.txt

а не \server1\websites\website\xml\1\infinite\description-15240.txt, что мне и нужно.

Проблема: я не могу заставить Get-ChildItem вернуть полный путь | { $_.FullName } не делает этого и | { $_.Parent }

Может ли кто-нибудь помочь и, возможно, сказать мне, может ли Copy-Item работать?

Большое спасибо, Н


person ninety    schedule 15.07.2013    source источник


Ответы (2)


Параметр Name фильтрует только имя файла, если вы хотите полный путь к файлу, используйте параметр include.

Get-ChildItem \\server1\websites\website\xml -include "description-15240.txt" -Recurse | % { Copy-Item ".\description-15240.txt" -Destination $_.fullname }
person Vinoth    schedule 15.07.2013

пытаться

gci \\server1\websites\website\xml -Name "description-15240.txt" -recurse |%{ convert-path $_.pspath}
person Loïc MICHEL    schedule 15.07.2013
comment
Это правильно? Я получаю ошибку Convert-Path : Cannot bind argument to parameter 'Path' because it is null, когда пытаюсь это сделать. - person ninety; 15.07.2013