Преобразовать команду xargs Bash в PowerShell?

У меня есть простая команда Bash для автоматического изменения некоторых изображений на веб-сайте с низким трафиком с помощью ImageMagick - я бы хотел преобразовать это в команду PowerShell, поэтому мне не нужно устанавливать Cygwin на моем веб-сервере, Может ли кто-нибудь предоставить свои навыки PSh здесь?

ls | xargs -I {} rconvert "{}" -resize 128x128\> "{}"

Ответ 1

Лучше всего направить вывод ls в командный файл foreach-object, подобный этому (% - это псевдоним foreach-object):

ls | %{rconvert $_ -resize 128x128}

Изменить: ls выводит список объектов FileInfo или DirectoryInfo в конвейер. Чтобы отфильтровать объекты DirectoryInfo, используйте фильтр "где-объекта" (? - псевдоним):

ls | ?{-not $_.PSIsContainer} | %{rconvert $_ -resize 128x128}

Если вам нужно получить доступ к полному имени пути в вашей команде, используйте свойство FullName объекта FileInfo ($ _ сам по себе будет разрешен к $_. Имя, которое является только именем файла):

ls | ?{-not $_.PSIsContainer} | %{rconvert $_.FullName -resize 128x128}