Основываясь на последующих комментариях, цель вашего вызова Select[-Object]
заключалась в создании отдельной строки с разделенными пробелами записями для каждого входного объекта.
Обратите внимание, что использованиеExport-Csv
тогда не имеет смысла, потому что он создаст один столбец Length
с входными строками ' length вместо вывода самих строк.
В последующем комментарии выопубликовал решение, которое использовало Write-Host
для создания выходной строки, но Write-Host
, как правило, не подходит для использования , если только намерение явно не записать только для отображения ,тем самым обходя потоки вывода PowerShell и, следовательно, возможность отправлять вывод другим командам, записывать его в переменную или перенаправлять в файл.
Вот фиксированная версия вашей команды, в которой используется оператор -join
объединить элементы массива строк для вывода одной строки, разделенной пробелами:
$sampleCsvInput = [pscustomobject] @{
Address = 'http://www.example.org/more/stuff';
'Final Address' = 'more/stuff2'
}
$sampleCsvInput | ForEach-Object {
"Redirect 301 ",
($_.Address -replace '^(?:https?://)?(?:[^@/\n]+@)?(?:www\.)?([^:/\n]+)', ''),
$_.'Final Address' -join ' '
}
Обратите внимание, что ,
- оператор построения массива PowerShell -имеет более высокий приоритет, чем оператор -join
, поэтому операция -join
действительно объединяет все 3 предыдущих элемента массива.
Приведенное выше возвращает следующую строку:
Redirect 301 /more/stuff more/stuff2