Posted On February 8, 2020

PowerShell: Add Quorum to Clusters

kimconnect 0 comments
blog.KimConnect.com >> Codes >> PowerShell: Add Quorum to Clusters
# SetClusterQuorum.ps1

$clustersAndQuorums=@();
$clustersAndQuorums+=[PSCustomObject]@{ClusterName='CLUSTER1';Quorum='\\FILESHERVER007\CLUSTER1$'};
$clustersAndQuorums+=[PSCustomObject]@{ClusterName='CLUSTER2';Quorum='\\FILESHERVER007\CLUSTER2$'};

function getViableNode{
param($nodes)
foreach ($node in $nodes){
$bingo=Test-NetConnection $node -InformationLevel Quiet;
if($bingo){return $node}
}
}

function setQuorum{
param($viableNodeWithWinRM,$quorum)
write-host "Connecting to $viableNodeWithWinRM...";
$session=new-pssession $viableNodeWithWinRM;
invoke-command -session $session -scriptblock{
param($quorum)
$clustername=(Get-Cluster).Name;
write-host "Setting quorum of cluster $clustername with path $quorum.";
Set-ClusterQuorum -NodeAndFileShareMajority $quorum;
write-host "`r`nDone.`r`n----------------`r`n"
} -Args $quorum
remove-pssession $session;
}

foreach ($item in $clustersAndQuorums){
$clustername=$item.ClusterName;
$quorum=$item.Quorum;
$nodes=(Get-ClusterNode -Cluster $clustername).Name;
$viableNodeWithWinRM=getViableNode $nodes;

$validPath=Test-Path $quorum;
if($validPath){
write-host "Quorum path $quorum is valid.";
setQuorum $viableNodeWithWinRM $quorum;
}else{
write-host "Quorum path $quorum is invalid.";
}
}

Sample Output:

Quorum path \\FILESHERVER007\CLUSTER1$ is valid.
Connecting to NODE009...
Setting quorum of cluster CLUSTER1 with path \\FILESHERVER007\CLUSTER1$.

Cluster QuorumResource PSComputerName
------- -------------- --------------
CLUSTER1 File Share Witness NODE009

Done.
----------------

Quorum path \\FILESHERVER007\CLUSTER2$ is valid.
Connecting to NODE079...
Setting quorum of cluster CLUSTER2 with path \\FILESHERVER007\CLUSTER2$.
CLUSTER1 File Share Witness NODE079

Done.
----------------

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post

Lightbox Javascript Contents

These JavaScript codes are open source and part of many applications, such as NextGen Gallery.…

PowerShell: File Server Cluster Migration Scripts

<# File-Server-Migration-Intra-Domain.ps1 Purposes: 1. Create Volumes with Labels 2. Create Virtual Clustered File Servers 3.…

PowerShell: Restart a Service on All Hyper-V Hosts of a Cluster

$serviceName='vmms' $clusterName='HyperV-cluster001' function restartServiceAllClusterNodes($service='vmms',$clusterName){ function restartService($serviceName){ $waitSeconds=40 $isValidProcess=try{[bool](get-service $serviceName -EA Stop)}catch{$false} if($isValidProcess){ try{ $process=Start-Process -FilePath…
Other project: DragonCoin.com