显示for循环中多个变量的输出

时间:2016-11-27 10:15:03

标签: powershell formatting export-to-csv

我正在尝试输出Skype响应组队列的不同属性以用于文档目的。

我想将NameTimeoutThresholdTimeoutActionTimeouturiOverflowThresholdOverflowActionOverflowCandidate作为第1行中的.csv文件头,然后在第2行的各列中输入输出。

我在下面尝试过,但格式化非常糟糕且标题不断重复。请有人帮忙。

还尝试以HTML格式输出,但没有运气。

$p = Get-CsRgsQueue | Where-Object {$_.Name -like "IPL*"} | Select-Object Name

foreach ($Name in $p)
{
    $q   = Get-CsRgsQueue -Name "$Name"
    $N   = $q.Name
    $TT  = $q.TimeoutThreshold
    $TA  = $q.TimeoutAction.Action
    $TAU = $q.TimeoutAction.uri
    $OF  = $q.OverflowThreshold
    $OFA = $q.OverflowAction
    $OFC = $q.OverflowCandidate

    $out = New-Object PSObject
    $out | Add-Member NoteProperty QueueName $N
    $out | Add-Member NoteProperty Timeout $TT
    $out | Add-Member NoteProperty TimeoutAction $TA
    $out | Add-Member NoteProperty TransferURI $TAU
    $out | Add-Member NoteProperty OverflowThreshhold $OF
    $out | Add-Member NoteProperty OverflowAction $OFA
    $out | Add-Member NoteProperty OverflowCandidate $OFC

    $out | FT -AutoSize | Export-Csv C:\abc.csv -Append
}

2 个答案:

答案 0 :(得分:1)

  

我在下面尝试过,但格式化真的很糟糕和标题   不断重复。请有人帮忙。

这是因为您通过FT -AutoSizeFormat-Table -AutoSize)管道对象 - 只有在您要显示/显示数据时才使用Format-* cmdlet。

您还可以通过仅调用Get-CsRgsQueue一次,将其传递给ForEach-Object并最终构建对象属性的哈希表来节省一些时间:

Get-CsRgsQueue | Where-Object {$_.Name -like "IPL*"} | ForEach-Object {
    New-object psobject -Property @{
        QueueName          = $_.Name
        Timeout            = $_.TimoutThreshold
        TimeoutAction      = $_.TimeoutAction.Action
        TransferURI        = $_.TimeoutAction.Uri
        OverflowThreshhold = $_.OverflowThreshold
        OverflowAction     = $_.OverflowAction
        OverflowCandidate  = $_.OverflowCandicate
    }
} |Export-Csv c:\abc.csv -NoTypeInformation

答案 1 :(得分:-2)

Mathias Jessen的简短解决方案

Get-CsRgsQueue | where Name -like "IPL*" | %{
    [pscustomobject] @{
    QueueName          = $_.Name
    Timeout            = $_.TimoutThreshold
    TimeoutAction      = $_.TimeoutAction.Action
    TransferURI        = $_.TimeoutAction.Uri
    OverflowThreshhold = $_.OverflowThreshold
    OverflowAction     = $_.OverflowAction
    OverflowCandidate  = $_.OverflowCandicate
    }
} | Export-Csv C:\result.csv -NoType