如何将数组转换成多行?

时间:2016-08-12 18:42:22

标签: arrays powershell

我正在使用Powershell显示所有组策略及其链接的内容。这需要GroupPolicy模块(Import-Module GroupPolicy)和以下脚本(信用到Mike Frobbins)完全满足我的需要,但输出显示如下:

  

“GPOName”, “LinksTo”, “启用”

  “默认组策略”,“服务器,计算机,德克萨斯”,“真实,真实,真实”

我需要它看起来像这样:

  

“GPOName”, “LinksTo”, “启用”

  “默认组策略”,“服务器”,“真实”
  “默认组策略”,“计算机”,“真实”
  “默认组策略”,“德克萨斯”,“真实”

任何帮助将不胜感激。我一直试图让它工作2天,我无法理解。我发现其他文章已经涵盖了这个主题,但解决方案似乎并不适用于这种方法。

function Get-GPOLink {

[CmdletBinding()]
param (
    [Parameter(Mandatory,
               ValueFromPipeline,
               ValueFromPipelineByPropertyName)]
    [Alias('DisplayName')]
    [string[]]$Name
)

PROCESS {

    foreach ($n in $Name) {            
        $problem = $false

        try {
            Write-Verbose -Message "Attempting to produce XML report for GPO: $n"

            [xml]$report = Get-GPOReport -Name $n -ReportType Xml -ErrorAction Stop
        }
        catch {
            $problem = $true
            Write-Warning -Message "An error occured while attempting to query GPO: $n"
        }

        if (-not($problem)) {
            Write-Verbose -Message "Returning results for GPO: $n"

            [PSCustomObject]@{
                'GPOName' = $report.GPO.Name
                'LinksTo' = $report.GPO.LinksTo.SOMPath
                'Enabled' = $report.GPO.LinksTo.Enabled
            }
        }
    }
}
}

1 个答案:

答案 0 :(得分:0)

您可以将qty包装在一个循环中,以迭代[PSCustomObject]的所有实例。

SOMPath

修改:已更新以迭代LinksTo记录,以避免多次启用回复。