PowerShell как представить параметры функции в виде CSV

#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"