Private/Set-DMHostInitiator.ps1
|
function Set-DMHostInitiator { [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '')] [CmdletBinding()] Param( [Parameter(Mandatory = $true)] [AllowEmptyCollection()] [object[]]$InputObject, [Parameter(Mandatory = $true)] [pscustomobject]$WebSession ) $hosts = @($InputObject) if ($hosts.Count -eq 0) { return } $initiatorsByHostId = @{} $allInitiators = @( Get-DMHostInitiator -WebSession $WebSession -InitiatorType FibreChannel -All Get-DMHostInitiator -WebSession $WebSession -InitiatorType ISCSI -All ) foreach ($initiator in $allInitiators) { $hostId = [string]$initiator.'Host Id' if ([string]::IsNullOrWhiteSpace($hostId)) { continue } if (-not $initiatorsByHostId.ContainsKey($hostId)) { $initiatorsByHostId[$hostId] = [System.Collections.Generic.List[object]]::new() } $initiatorsByHostId[$hostId].Add($initiator) } foreach ($hostObject in $hosts) { $hostId = [string]$hostObject.id $hostObject.initiators = if ($initiatorsByHostId.ContainsKey($hostId)) { @($initiatorsByHostId[$hostId]) } else { @() } $hostObject } } |