You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Oct 28, 2022. It is now read-only.
I'm currently writing a script to fetch VMs attached to specific VXLANs. This to create a VM batchlist for our VMware migration project.
I have multiple NSX-V Managers which I am connecting to and obviously also multiple vCenters.
My script is connecting to all of these NSX and vCenter instances and I need to perform actions on specific instances based on certain logic.
I've stored the instances as objects in an array to loop over them to do operations on multiple instances (based on specific logic).
Issue:
I have found that the "Get-NSXBackingPortGroup" can only be used when the "$global:DefaultVIServer" is set. This is not workable in certain situations. As I mentioned my script is connecting to multiple instances and it needs to do actions on specific vCenters based on certain logic.
Solution:
I have locally changed the PowerNSX module to workaround this "missing feature" of being able to specify a VIConnection object for this "Get-NSXBackingPortGroup" cmdlet.
We can now specify a "-Connection" argument, which will then be used in the "Get-VDPortgroup" cmdlet within the "Get-NSXBackingPortGroup" function:
functionGet-NsxBackingPortGroup{
<#.SYNOPSIS Gets the PortGroups backing an NSX Logical Switch..DESCRIPTION NSX Logical switches are backed by one or more Virtual Distributed Switch portgroups that are the connection point in vCenter for VMs that connect to the logical switch. In simpler environments, a logical switch may only be backed by a single portgroup on a single Virtual Distributed Switch, but the scope of a logical switch is governed by the transport zone it is created in. The transport zone may span multiple vSphere clusters that have hosts that belong to multiple different Virtual Distributed Switches and in this situation, a logical switch would be backed by a unique portgroup on each Virtual Distributed Switch. This cmdlet requires an active and correct PowerCLI connection to the vCenter server that is registered to NSX. It returns PowerCLI VDPortgroup objects for each backing portgroup..EXAMPLE#>param (
[Parameter (Mandatory=$true,ValueFromPipeline=$true)]
[ValidateScript({ValidateLogicalSwitch $_ })]
[object]$LogicalSwitch,
[Parameter (Mandatory=$False)]
#PowerCLI Connection object
[ValidateNotNullOrEmpty()]
[PSCustomObject]$Connection=$global:DefaultVIServer
)
begin {
if ( -not ( $Connection.IsConnected )) {
throw"This cmdlet requires a valid PowerCLI connection. Use Connect-VIServer to connect to vCenter and try again."
}
}
process {
$BackingVDS=$_.vdsContextWithBackingforeach ( $vDSin$BackingVDS ) {
write-debug"$($MyInvocation.MyCommand.Name) : Backing portgroup id $($vDS.backingValue)"try {
Get-VDPortgroup-Server $Connection-Id "DistributedVirtualPortgroup-$($vDS.backingValue)"
}
catch {
throw"VDPortgroup not found on connected vCenter $($Connection.Name). $_"
}
}
}
end {}
}
As mentioned, I have implemented this locally now and it works fine. As at the moment I do not have much time to clone the repo, make the changes (and write a test), perhaps someone can review the above and then make the changes and pull request.
Thanks and Regards,
Viresh
The text was updated successfully, but these errors were encountered:
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Hi guys !
Background:
I'm currently writing a script to fetch VMs attached to specific VXLANs. This to create a VM batchlist for our VMware migration project.
I have multiple NSX-V Managers which I am connecting to and obviously also multiple vCenters.
My script is connecting to all of these NSX and vCenter instances and I need to perform actions on specific instances based on certain logic.
I've stored the instances as objects in an array to loop over them to do operations on multiple instances (based on specific logic).
Issue:
I have found that the "Get-NSXBackingPortGroup" can only be used when the "$global:DefaultVIServer" is set. This is not workable in certain situations. As I mentioned my script is connecting to multiple instances and it needs to do actions on specific vCenters based on certain logic.
Solution:
I have locally changed the PowerNSX module to workaround this "missing feature" of being able to specify a VIConnection object for this "Get-NSXBackingPortGroup" cmdlet.
We can now specify a "-Connection" argument, which will then be used in the "Get-VDPortgroup" cmdlet within the "Get-NSXBackingPortGroup" function:
As mentioned, I have implemented this locally now and it works fine. As at the moment I do not have much time to clone the repo, make the changes (and write a test), perhaps someone can review the above and then make the changes and pull request.
Thanks and Regards,
Viresh
The text was updated successfully, but these errors were encountered: