Я пытаюсь использовать Powershell, чтобы взять список устаревших шоколадных пакетов и вставить их в команду choco upgrade
, которая принимает список, разделенный пробелами: choco upgrade <pkg> [<pkg2 <pkgN>]
.
Это работает как ожидается получение и форматирование списка:
PS C:\WINDOWS\system32> (choco outdated -r | %{$_.split('|')[0]}) -join ' '
google-drive-file-stream intel-dsa malwarebytes paint.net powertoys zoom
Просто добавить | choco upgrade
не может быть и речи, потому что он не принимает ввод конвейера. Итак, я хочу вставить результат конвейера, как если бы он был аргументом команды, как если бы я просто набрал это: choco upgrade google-drive-file-stream intel-dsa malwarebytes paint.net powertoys zoom
Это были мои лучшие догадки: (choco outdated -r | %{$_.split('|')[0]}) -join ' ' | %{choco upgrade $_}
choco upgrade ((choco outdated -r | %{$_.split('|')[0]}) -join ' ')
но кажется, что они вставляют весь список как один аргумент, включая пробелы:
PS C:\WINDOWS\system32> choco upgrade ((choco outdated -r | %{$_.split('|')[0]} | Select-Object -skiplast 1) -join ' ')
Chocolatey v0.10.15
Upgrading the following packages:
google-drive-file-stream intel-dsa malwarebytes paint.net powertoys
By upgrading you accept licenses for the packages.
google-drive-file-stream intel-dsa malwarebytes paint.net powertoys is not installed. Installing...
google-drive-file-stream intel-dsa malwarebytes paint.net powertoys not installed. The package was not found with the source(s) listed.
Как я могу вставить все эти значения, как если бы они были отдельными аргументами?
(Я стремлюсь к однострочному. Меня интересует способ сделать это PS-idiomati c, но любой хак, который работает, работает.)