Отформатируйте каждую строку вывода команды в powershell - PullRequest
2 голосов
/ 08 октября 2011

Как мне отформатировать каждую строку вывода 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 Ответ

4 голосов
/ 08 октября 2011

Вам нужно ForEach-Object здесь:

Get-ChildItem | ForEach-Object { Write-Host My string $_.FullName my string2 }

в противном случае $_.Как правило, $_ существует только внутри блоков скрипта, а не непосредственно в конвейере.Также Write-Host работает с несколькими аргументами, и вы не можете объединять строки в командном режиме, поэтому вам нужно либо добавить круглые скобки, чтобы получить один аргумент в режиме выражения, либо опустить кавычки и + (как я это сделал здесь).

Короче:

gci | % { "My string $($_.FullName) my string2" }

(с использованием псевдонимов, интерполяции строковых переменных и того факта, что строки просто выпадают из конвейера на хост)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...