Connection settings are stored in .rdp files. There is no need to specify a computer name and list other settings in the code.
Connect Hyper-V with settings from .rdp file:
$hyperv = Get-VM -Name "VM-Name"
if($hyperv.State -eq "Running") {
Write-Host "Hyper-V is Running."
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "$env:userprofile\Documents\RDP-Name.rdp"
} else {
Write-Host "Hyper-V is Stopped."
Start-VM -Name "VM-Name"
Start-Sleep -Seconds 6
Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "$env:userprofile\Documents\RDP-Name.rdp"
}
Well, for the beauty of this whole process, create a .vbs file in the same folder that calls your .ps1 file in invisible mode.
Set objShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.GetFile(Wscript.ScriptFullName)
path = FSO.GetParentFolderName(F)
objShell.Run(CHR(34) & "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "" -ExecutionPolicy Bypass & ""'" & path & "\Ps1File.ps1'" & CHR(34)), 0, True