VMware VMRC Shortcuts mit Powershell erstellen

Spätestens mit dem Upgrade auf VMware vSphere 6.5 ist nun der typische vSphere Client Vergangenheit und der Benutzer muss den Web Client und die VMRC (VMware Remote Console) nutzen, um virtuelle Maschinen zu bedienen, wenn beispielsweise SSH oder RDP nicht möglich ist. 

Wer also einen schnellen Weg braucht, der kann sich ein VMRC-Shortcut erstellen. Die ID der VM ist im Argument der Verknüpfung hinterlegt und damit lässt sich auch direkt die Konsole der VM öffnen. 

Klar, dass man das nicht händisch machen will. Daher lieber ein Powershell Skript.

Werbung in eigener Sache: Mit admins-buddy.de können IT-Teams lästige, sich wiederholende Tätigkeiten ausführen. Einmal ein Automatismus erstellt, kann dieser einfach über das Webinterface ausgeführt werden. Dadurch erweiterst du dich und deine Kollegen bei Routineaufgaben. Von Admins, für Admins.


##############################
#
# Erstelle VMRC Shortcuts aller Virtuellen Maschinen
# PowerCLI bzw. das Powershell-Snapin muss vorhanden sein
#
##############################
 
$VCenterServer = "/*FQDN of vCenter*/"
$VCenterUser = "DOMAIN\USERNAME"
$DestinationDir = "X:\PATH\OF\DESTINATION\VMRC"


Write-Output "Script started $(Get-Date)"  

 
# Check VMware PSSnapin  
If ( (Get-PSSnapin VMware.VimAutomation.Core -ErrorAction SilentlyContinue) -eq $null) {  
    write-output "Loading PSSnapin"
    Add-PSSnapin VMware.VimAutomation.Core  
}  else {
    Write-Output "PSSnapin already loaded" -f green
}


$connectionSucceeded = 0
if ($connectionSucceeded -eq 0) {
    try {
        $connectViServer = Connect-VIServer $VCenterServer -User $VCenterUser -ErrorAction SilentlyContinue
        $ErrorMessage = ""
    }
    catch {
        $ErrorMessage = "ErrorMessage: "+$Error[0]
    }
    finally {
        if ($connectViServer -eq $NULL) {
            write-host "Login failed`n" -f red
            $connectionSucceeded = 0
        } else {
            $connectionSucceeded = 1
            write-host "Login successfull`n" -f green
        
        }
    }

}


$vmnameArray = Get-VM | select name

foreach ($vmname in $vmnameArray) {

    write-host "Create Shortcut" $vmname.name -ForegroundColor DarkYellow
    $vmname = $vmname.name

    $vmId = Get-VM -name $vmname | select Id
    $stringId = $vmId.Id
    $rightStringID = $stringId -replace "VirtualMachine-", ""

    $Shell = New-Object -ComObject ("WScript.Shell")
    $ShortCut = $Shell.CreateShortcut("$DestinationDir\$vmname.lnk")
    $ShortCut.TargetPath ="C:\Program Files (x86)\VMware\VMware Remote Console\vmrc.exe";
    $ShortCut.Arguments="vmrc://$VCenterServer/?moid=$rightStringID"
    $ShortCut.WorkingDirectory = "C:\Program Files (x86)\VMware\VMware Remote Console";
    $ShortCut.WindowStyle = 1;
    $ShortCut.IconLocation = "C:\Program Files (x86)\VMware\VMware Remote Console\vmrc.exe, 0";
    $ShortCut.Description = "Shortcut VMRC Console";
    $ShortCut.Save()
}

Wir haben dieses Skript bei Kunden eingebunden, die über einen Windows Task Scheduler täglich die VMRC Verknüpfungen erzeugen lassen. 

VMware Remote Console VMRC Shortcut Properties