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

Powershell 在for循环中显示多个变量的输出,powershell,formatting,export-to-csv,Powershell,Formatting,Export To Csv,我正在尝试输出Skype响应组队列的不同属性,以用于文档编制 我想将名称,超时阈值,超时动作,超时URI,溢出阈值,溢出动作,溢出候选作为第1行的.csv文件头,然后在第2行的各个列中输入输出 我在下面尝试过,但是格式非常糟糕,标题不断重复。能找个人帮忙吗 还尝试以HTML格式获取输出,但没有成功 $p = Get-CsRgsQueue | Where-Object {$_.Name -like "IPL*"} | Select-Object Name foreach ($Name in $p

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

我想将
名称
超时阈值
超时动作
超时URI
溢出阈值
溢出动作
溢出候选
作为第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
}
我在下面试过了,但是格式很糟糕,标题也很糟糕 不断重复。能找个人帮忙吗

这是因为您通过管道将对象传输到
FT-AutoSize
Format Table-AutoSize
)-仅在您即将显示/呈现数据时使用
Format-*
cmdlet

您还可以通过只调用一次
Get-csrgsquee
来节省一些时间,将其传送到
ForEach对象
,并最终为对象属性构造一个哈希表:

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

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

您必须在最后一行中省略“|FT-AutoSize”。要整理它,您可以对属性使用哈希表,这称为splatting。希望格式看起来没问题。已编辑***Grr,很抱歉在下面设置格式。foreach($P中的名称)$properties=@{$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}新对象-TypeName psobject-属性$Properties如果格式化工作正常,每个属性应该位于新行。