Finding a VM by its MAC address can be a non-trivial task, especially if you have a vCenter with tons of complicated virtual appliances and several network cards on each one of them. Fortunately, VMware has PowerShell CLI that can help here.
First, you will need to install PowerCLI on a Windows box. Check for PowerCLI version you want to use on its PowerShell Gallery page. PowerCLI versions are backward-compatible (PowerCLI v6.5 worked for me on vCenter 5.5), so just pick the latest stable version. On the way, PowerShell may ask you to update NuGet and/or trust installations from PowerShell Gallery.
PS C:\> Install-Module -Name VMware.PowerCLI -RequiredVersion 6.5.4.7155375 NuGet provider is required to continue PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or 'C:\Users\ankhitre\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import the NuGet provider now? [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): Y Untrusted repository You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y PS C:\>
Next step is to import core CLI module. You may need to adjust execution policy to do that – do it on your own risk, and make sure you know what you are doing first! Also, PowerCLI will prompt you to join their data collection program, but you can safely ignore that “warning” for now.
PS C:\> Import-Module VMware.VimAutomation.Core WARNING: ..... PS C:\>
Now you can connect to your vCenter:
PS C:\> Connect-VIServer -Server <IP/FQDN> -Protocol https -User <username> -Password <password> Name Port User ---- ---- ---- <IP/FQDN> 443 <user> PS C:\>
Note that if you don’t have valid SSL certificate on your vCenter, you will have to configure PowerCLI to deal with that – either prompt you to accept certificate on connection ("Set-PowerCLIConfiguration -InvalidCertificateAction Prompt"
) or just ignore those warnings altogether ("Set-PowerCLIConfiguration -InvalidCertificateAction Ignore"
).
Once CLI is connected to vCenter, finding for your VM by MAC address is one step away:
PS C:\> Get-VM | Get-NetworkAdapter | Where {$_.MacAddress -eq “00:50:56:12:34:56”} | Select-Object Parent,Name,MacAddress Parent Name MacAddress ------ ---- ---------- ubuntu-dev-012 Network adapter 1 00:50:56:12:34:56 PS C:\>
Alternatively, you can “pipe” the result through Format-List
instead of Select-Object
and get all available properties of this network adapter.
Good luck!