Разделение результатов при использовании нескольких переменных с меткой и выражением из столбца - PullRequest
0 голосов
/ 23 октября 2018
$cluster = Get-ClusterResource -Cluster <server> |
           Select Name,Ownernode, ResourceType, State |
           Where-Object {$_.ResourceType -match 'SQL Server Availability Group'}
$cluster | Out-GridView

$Nodes = Get-ClusterNode -Cluster $Server |
         Select @{n='ClusterName';e={$_.Cluster}}, Name, State 
$Nodes | Out-GridView

Из вышеприведенной команды результаты отображаются как (в зависимости от количества строк).

1. Name | Ownernode | ResourceType | State
2. Name | Ownernode | ResourceType | State
3. Name | Ownernode | ResourceType | State

Поскольку я использую несколько переменных для хранения результатов, я объединяю столбцы из обеих переменных в одну:

$Res = @()
$Res = foreach ($Server in $Servers) {
    $cluster = Get-ClusterResource -Cluster <server> |
               Select Name, Ownernode, ResourceType, State |
               Where-Object {$_.ResourceType -match 'SQL Server Availability Group'} 
    $cluster

    $Nodes = Get-ClusterNode -Cluster $Server |
             Select @{n='ClusterName';e={$_.Cluster}}, Name, State 
    $Nodes

    New-Object -Type PSObject -Property @{
        Name  = $cluster.Name
        Owner = $cluster.Ownernode
        Node1 = $nodes.Name[0]
        Node2 = $nodes.Name[2]
    }
}
$Res | Select Name, Owner, Node1, Node2 | Out-GridView

Проблема в том, что возвращаемые результаты объединяютсяв столбец вместо отдельных строк:

Name | Owner| Node1 | Node2
1.name,name,name | owner | node1 | node2 

1 Ответ

0 голосов
/ 27 октября 2018

вот мои два цента на ваши вопросы: ваша переменная $cluster - это набор / список ресурсов кластера, поэтому вы получаете список всех имен при использовании $cluster.Name.Я думаю, что вы хотите перебрать этот список ресурсов и для каждой записи получить узлы.я также изменил PSObject, чтобы он возвращал одну строку на ресурс и узел;не два или более узлов.

$Res = @()
$Res = foreach ($Server in $Servers) {
    $clusterResources = Get-ClusterResource -Cluster $server | Where-Object {$_.ResourceType -match 'SQL Server Availability Group'} 
    foreach($resource in $clusterResources) {
        $Nodes = Get-ClusterNode -Cluster $resource.Cluster

        foreach($Node in $Nodes) {
            New-Object -Type PSObject -Property @{
                Name  = $Node.Cluster
                Owner = $resource.Ownernode
                Node = $Node.Name
            }
        }
    }
}
$Res | Out-GridView
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...