Scripts/VirtualIP/get-cohesityvirtualip.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
class VirtualIP {
    [string]$Ip
    [string]$VlanName
    [string]$Hostname
    [string]$Gateway
    [string]$Subnet

    VirtualIP($ip, $vlanName, $hostname, $gateway, $subnet) {
        $this.Ip = $ip
        $this.VlanName = $vlanName
        $this.Hostname = $hostname
        $this.Gateway = $gateway
        $this.Subnet = $subnet
    }
}
function Get-CohesityVirtualIP {
    <#
        .SYNOPSIS
        Get virtual IP(s).
        .DESCRIPTION
        The Get-CohesityVirtualIP function is used to get virtual IP(s).
        .NOTES
        Published by Cohesity
        .LINK
        https://cohesity.github.io/cohesity-powershell-module/#/README
        .EXAMPLE
        Get-CohesityVirtualIP -InterfaceGroupName "intf_group2" -VlanId 11
        .EXAMPLE
        Get-CohesityVirtualIP
    #>

    [OutputType('System.Object[]')]
    [CmdletBinding(DefaultParameterSetName='Default')]
    Param(
        [Parameter(Mandatory = $true, ParameterSetName = 'VirtualIPInfo')]
        [ValidateNotNullOrEmpty()]
        [string]$InterfaceGroupName,
        [Parameter(Mandatory = $true, ParameterSetName = 'VirtualIPInfo')]
        [ValidateNotNullOrEmpty()]
        [string]$VlanId
    )

    Begin {
    }

    Process {
        $vlanObject = $null
        if ($VlanId -and $InterfaceGroupName) {
            # Please see the documentation how to construct the below attribute
            $virtualInterfaceGroupName = $InterfaceGroupName + "." + $VlanId
            $vlanObject = Get-CohesityVlan | Where-Object { $_.id -eq $VlanId -and $_.ifaceGroupName -eq $virtualInterfaceGroupName}
        }
        else {
            $vlanObject = Get-CohesityVlan
        }
        if ($null -eq $vlanObject) {
            Write-Output "VLAN id '$VlanId' on interface group '$InterfaceGroupName' does not exists"
            return
        }
        $virtualIPList = @()
        if ("System.Array" -eq $vlanObject.GetType().BaseType.ToString()) {
            foreach ($item in $vlanObject) {
                foreach ($ip in $item.ips) {
                    [VirtualIP]$vip = [VirtualIP]::New($ip, $item.vlanName, $item.hostname, $item.gateway, $item.subnet.ip)
                    $virtualIPList += $vip
                }
            }
        }
        else {
            foreach ($ip in $vlanObject.ips) {
                [VirtualIP]$vip = [VirtualIP]::New($ip, $vlanObject.vlanName, $vlanObject.hostname, $vlanObject.gateway, $vlanObject.subnet.ip)
                $virtualIPList += $vip
            }
        }
        $virtualIPList
    }

    End {
    }
}