Get-AllAzNics.psm1


<#
 .Synopsis
  List All NICs in a Subscription along with few other details like SubnetNSG,VNET,Location,UDR,ResourceGroup,Subscription,etc.
   
 .Description
  List All NICs in a Subscription along with few other details like SubnetNSG,VNET,Location,UDR,ResourceGroup,Subscription,etc.
   
 .Parameter
  None.
   
 .Example
   #List All NICs and few other details for a Subscription.
   Get-AllAzNics
#>


#------------------------------------------------------------------------------
#
#
# THIS CODE AND ANY ASSOCIATED INFORMATION ARE PROVIDED “AS IS” WITHOUT
# WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
# LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS
# FOR A PARTICULAR PURPOSE. THE ENTIRE RISK OF USE, INABILITY TO USE, OR
# RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE USER.
#
#------------------------------------------------------------------------------

Function Get-AllAzNics (){

Param ()

$vmname = @()
$nsgobj = @()
$rg = @()
$getsubpernic = @()

$getnic = Get-AzureRmNetworkInterface
$date = (get-date).ToUniversalTime()

If((Get-Module Split-AzResourceID -ListAvailable) -eq $null){
Write-Host "Split-AzResourceID module is required to run this module. Installing Split-AzResourceID module"
Install-Module -Name Split-AzResourceID -MinimumVersion 2.1 -Scope CurrentUser 
}


$vmname = $getnic | ForEach-Object {$_.VirtualMachine.Id -replace ".*/"}
$rgvnet = $getnic | ForEach-Object {$_.IpConfigurations.subnet.id   -replace ".*/resourcegroups/" -replace "/providers/.*"}
$rg = $getnic | ForEach-Object {$_.ResourceGroupName}



For ($i=0; $i -lt $getnic.Count; $i++){

$getsubpernic += Get-AzVirtualNetworkSubnetConfig -ResourceId $getnic[$i].IpConfigurations[0].subnet.id

}




For ($i=0; $i -lt $getnic.Count; $i++){


$hash =  [ordered]@{

    NICName                     = $getnic[$i].Name
    ResourceGroupName             = $getnIC[$I].ResourceGroupName
    Subscription                 = $(($getnic[$i].Id | Split-AzResourceID).subscription)
    Location                     = $getnic[$i].Location
    VM                             = $vmname[$i]
    PrivateIPs                    = $getnic[$i].IpConfigurations.privateipaddress
    Subnet                      = $getnic[$i].IpConfigurations.subnet.id             
    VNET                         = $(($getnic[$i].IpConfigurations.subnet.id | Split-AzResourceID).resourcename) 
    NicDNS                         = $getnic[$i].DnsSettings.DnsServers
    VMid                         = $getnic[$i].VirtualMachine.Id 
    ApplicationGateway             = $getnic[$i].IpConfigurations.ApplicationGatewayBackendAddressPools.id
    LoadBalancer                 = $getnic[$i].IpConfigurations.LoadBalancerBackendAddressPools.id
    #VNETDNS = ''
    NicNSG                         = $getnic[$i].NetworkSecurityGroup.Id
    EnableIPForwarding             = $getnic[$i].EnableAcceleratedNetworking
    SubnetNSG                     = $getsubpernic[$i].NetworkSecurityGroup.id                     
    EnableAcceleratedNetworking = $getnic[$i].EnableAcceleratedNetworking
    SubnetUDR                     = $getsubpernic[$i].routetable.id              
    ProvisioningState             = $getnic[$i].ProvisioningState
    PrivateEndPointFQDNs         = $getnic[$i].IpConfigurations.PrivateLinkConnectionProperties.Fqdns
    PrivateEndPointGroupID         = $getnic[$i].IpConfigurations.PrivateLinkConnectionProperties.GroupID
    ServiceEndpoints            = $getsubpernic[$i].ServiceEndpoints
    MacAddress                  = $getnic[$i].MacAddress
    Date                         = $date

} 


$nsgobj += New-Object PSObject  -Property $hash

} 

# Output
$nsgobj


####

}


Export-ModuleMember -Function  Get-AllAzNics