#powershell-5.1
Вопрос:
Я новичок в PowerShell, и у меня очень простая задача: вывести три параметра функции в виде строки CSV. Вот что я получаю:
function ToCsv($v1, $v2, $v3) {
Write-Host $v1, $v2, $v3
Write-Host "$v1,$v2,$v3"
Write-Host $v1 "," $v2 "," $v3
}
ToCsv("One", "Two", "Three")
One Two Three
One Two Three,,
One Two Three , ,
Каков был бы правильный способ вывода набора параметров функции в виде строки, разделенной запятыми?
Я использую PowerShell 5.1
Ответ №1:
Марк,
Это требует небольшой работы, но не большой.
Function ToCsv($v1, $v2, $v3) {
#Convert arguments to an Ordered Hash Table
$MyArgs = [Ordered]@{
Arg1 = "$v1"
Arg2 = "$v2"
Arg3 = "$v3"
}
#Convert the Hash table to a PS Custom Object.
$object = new-object psobject -Property $MyArgs
#Export the PS Custom Object as a CSV file.
Export-csv -InputObject $object -Path G:BEKDocsTest.csv -NoTypeInformation
}
ToCsv "One" "Two" "Three"
Результаты: (как видно из NP )
"Arg1","Arg2","Arg3"
"One","Two","Three"
ХТ
Обновить:
Вот лучшее решение, которое будет обрабатывать любое количество аргументов.
Function ToCsv {
$ArgCnt = $Args.Count
$object = new-object psobject
For ($Cntr = 0; $Cntr -lt $ArgCnt; $Cntr ) {
$AMArgs = @{InputObject = $object
MemberType = "NoteProperty"
Name = $("Arg" $($Cntr 1))
Value = "$($Args[$($Cntr)])"
}
Add-Member @AMArgs
}
Export-CSV -InputObject $object -Path G:BEKDocsTest.csv -NoTypeInformation
} #End Function ToCSV
ToCsv "One" "Two" "Three" "Four"
Результаты: (как видно из NP )
"Arg1","Arg2","Arg3","Arg4"
"One","Two","Three","Four"