50クラスタの高可用性環境(2つのDC、プライマリとスタンバイ)。各クラスタには5〜6個のノードがあります。私はすべてのクラスタのすべてのノードが "オンライン"(状態)で、 "プライマリ"(OwnerNode)で動作していることを確認したい。他の方法で示されているノードは、注意する必要があります。フェールオーバークラスタアラートオートメーション
私は配列を使用して、必要な情報をforeach
ループに格納しています。問題は、コンパイルするのに時間がかかりすぎるということです。私は早くそれを完了したい。
$Clusternodes= * some 50 elements *
$Standbynodes= * some 50 elements *
foreach ($cluster in $Clusternodes) {
$NotOnline += Get-ClusterGroup -Cluster $Cluster |
where {$_.State -ne "Online"} |
Select-Object Name,OwnerNode,State
foreach ($node in $Standbynodes) {
$Standbys += Get-ClusterGroup -Cluster $Cluster |
where {$_.OwnerNode -eq "$node"} |
Select-Object Name,OwnerNode,State
}
}
編集:
Get-clustergroup -Cluster $Cluster
戻り、すべてのクラスタ内の5〜6エントリ。出力には、Name、OwnerNode、Stateの3つの列があります。
状態(実行中かどうか)と所有者ノード(プライマリDCまたはセカンダリDCのいずれか)に基づいて、すべてのエントリを配列に格納しています。したがって、私は4つの配列が必要です。前者は容易であるが、後者は容易ではない。それ自体は50個の奇数要素を持つ別の2つの配列です。したがって、私は以下に述べるようにハッシュテーブルを使用しました。しかし、以下のコードを試してみると、常に空の配列が返されます。
$Clusternodes = * some 50 elements *
$Standbynodes = * some 50 elements *
$Primarynodes = * some 50 elements *
$pr = @{}
$sb = @{}
$Standbynodes | ForEach-Object { $sb[$_] = $true }
$Primarynodes | ForEach-Object { $pr[$_] = $true }
$RunninginPrimary = @()
$NotRunninginPrimary = @()
$RunninginStandby = @()
$NotRunninginStandby = @()
foreach ($cluster in $Clusternodes) {
$c = Get-ClusterGroup -Cluster $Cluster
$NotRunninginStandby += $c | Where-Object {
($_.State -ne "Online") -and ($sb.ContainsKey($_.OwnerNode))
} | Select-Object Name,OwnerNode,State
$NotRunninginPrimary += $c | Where-Object {
($_.State -ne "Online") -and ($pr.ContainsKey($_.OwnerNode))
} | Select-Object Name,OwnerNode,State
$RunninginStandby += $c | Where-Object {
($_.State -eq "Online") -and ($sb.ContainsKey($_.OwnerNode))
} | Select-Object Name,OwnerNode,State
$RunninginPrimary += $c | Where-Object {
($_.State -eq "Online") -and ($pr.ContainsKey($_.OwnerNode))
} | Select-Object Name,OwnerNode,State
}
'は、Get-Clustergroup -cluster $ cluster' - 3つのカラム名、OwnerNode、国家と5-6のエントリを返します。そこからStateがOnlineと等しくなく、OwnerNodeが$ Standbynodes配列の項目であってはならない場合、Filterを選択する必要があります。 –
少し混乱しています。 DC-> 50クラスタ - > 5-6ノード - > 意味は約250ノードです。しかし、スクリプトを実行する方法は、すべてのノードを毎回実行しているようですクラスタ。あなたは合計250回の実行の代わりに12,500回の実行を得ています..... – ArcSet