Public/Disconnect-SilkCNode.ps1
function Disconnect-SilkCNode { param( [Parameter(Mandatory)] [ipaddress] $cnodeIP ) $portal = Get-IscsiTargetPortal | Where-Object {$_.TargetPortalAddress -eq $cnodeIP.IPAddressToString} if ($portal) { Remove-IscsiTargetPortal -TargetPortalAddress $cnodeIP.IPAddressToString -InitiatorInstanceName $portal.InitiatorInstanceName -InitiatorPortalAddress $portal.InitiatorPortalAddress -Confirm:0 | Out-Null Get-IscsiTarget | Update-IscsiTarget | Out-Null Get-IscsiTargetPortal | Update-IscsiTargetPortal | Out-Null Update-MPIOClaimedHW -Confirm:0 | Out-Null # This effectively rescans } # Removes persistence for those now-undiscovered sessions $allConnections = Get-IscsiConnection | where-object {$_.TargetAddress -eq $cnodeIP.IPAddressToString} $killSessions = $allConnections | Get-IscsiSession | Where-Object {$_.IsDiscovered -eq 0} # ensure unique sessions for the desired portal foreach ($k in $killSessions) { Unregister-IscsiSession -SessionIdentifier $k.SessionIdentifier -ErrorAction SilentlyContinue } Update-MPIOClaimedHW -Confirm:0 | Out-Null # Rescan # Now, add the desired number of sessions back in... $return = Get-SilkSessions return $return } |