I wrote a very simple PowerShell script (Advanced Function) that will simplify process to add a new disk to any failover cluster (Hyper-V, SQL) that is connected to SAN via Fibre Channel.
If you need WWN (PWWN) of all nodes in the cluster then you need to know only a name of a single node or name of the cluster.
Examples
Enter node name
Get-ClusterNodeInitiatorPort -Cluster OneOfMyNode |
Export-Csv -Path 'C:\Temp\data.csv'
Enter cluster Name
Get-ClusterNodeInitiatorPort -Cluster MyCluster |
Format-Table -AutoSize
Code
Function Get-ClusterNodeInitiatorPort
{
<#
.SYNOPSIS
Enter name of the cluster or any node and get all node names and their WWN (PWWN)
.DESCRIPTION
Developer
Developer: Rudolf Vesely, http://rudolfvesely.com/
Copyright (c) Rudolf Vesely. All rights reserved
License: Free for private use only
"RV" are initials of the developer's name Rudolf Vesely and distingue names of Rudolf Vesely's cmdlets from the other cmdlets.
Description
Enter name of the cluster or any node and get all node names and their WWN (PWWN).
Requirements
Developed and tested using PowerShell 4.0.
.PARAMETER Cluster
Name of cluster or node.
.EXAMPLE
'EXAMPLE: Enter name of the cluster or any node'
Get-ClusterNodeInitiatorPort -Cluster MyCluster |
Format-Table -AutoSize
.INPUTS
.OUTPUTS
System.Management.Automation.PSCustomObject
.LINK
https://techstronghold.com/
#>
[CmdletBinding(
DefaultParametersetName = 'Cluster',
SupportsShouldProcess = $true,
PositionalBinding = $false,
HelpURI = 'https://techstronghold.com/',
ConfirmImpact = 'Medium'
)]
Param
(
[Parameter(
Mandatory = $true,
Position = 0,
ParameterSetName = 'Cluster',
ValueFromPipelineByPropertyName = $true
)]
[ValidateLength(1, 255)]
[Alias('ClusterName')]
[Alias('NodeName')]
[string[]]$Cluster
)
Begin
{
# Configurations
$ErrorActionPreference = 'Stop'
if ($PSBoundParameters['Debug']) { $DebugPreference = 'Continue' }
Set-PSDebug -Strict
Set-StrictMode -Version Latest
}
Process
{
foreach ($clusterItem in $Cluster)
{
$clusterNodeItems = Get-ClusterNode -Cluster $clusterItem |
Select-Object -ExpandProperty Name
foreach ($clusterNodeItem in $clusterNodeItems)
{
$items = Invoke-Command -ComputerName $clusterNodeItem -ScriptBlock { Get-InitiatorPort }
foreach ($item in $items)
{
[PsCustomObject]@{
Computername = $clusterNodeItem
NodeAddress = $item.NodeAddress
PortAddress = $item.PortAddress
}
}
}
}
}
End
{
}
}
