#powershell
#powershell
Вопрос:
Как я могу отформатировать каждую строку вывода Get-ChildItem? Например, я хотел бы окружить ее своими собственными строками, чтобы получить следующий вывод (обычный — без таблиц или чего-либо еще) :
My string: C:File.txt my string2
My string: C:Program Files my string2
My string: C:Windows my string2
Следующее не работает:
Get-ChildItem | Write-Host "My string " $_ " my string2"
Ответ №1:
Вам нужно ForEach-Object
здесь:
Get-ChildItem | ForEach-Object { Write-Host My string $_.FullName my string2 }
в противном случае нет $_
. Как правило, $_
существует только в блоках сценариев, а не непосредственно в конвейере. Также Write-Host
работает с несколькими аргументами, и вы не можете объединять строки в командном режиме, поэтому вам нужно либо добавить круглые скобки, чтобы получить один аргумент в режиме выражения, либо опустить кавычки и
(как я сделал здесь).
Короче:
gci | % { "My string $($_.FullName) my string2" }
(используя псевдонимы, интерполяцию строковых переменных и тот факт, что строки просто выпадают из конвейера на хост)