Вам нужно ForEach-Object
здесь:
Get-ChildItem | ForEach-Object { Write-Host My string $_.FullName my string2 }
в противном случае $_
.Как правило, $_
существует только внутри блоков скрипта, а не непосредственно в конвейере.Также Write-Host
работает с несколькими аргументами, и вы не можете объединять строки в командном режиме, поэтому вам нужно либо добавить круглые скобки, чтобы получить один аргумент в режиме выражения, либо опустить кавычки и +
(как я это сделал здесь).
Короче:
gci | % { "My string $($_.FullName) my string2" }
(с использованием псевдонимов, интерполяции строковых переменных и того факта, что строки просто выпадают из конвейера на хост)