How do I start remote desktop from PowerShell?
Asked Answered
U

7

19

How do I start an RDP session from powershell? I'm looking to avoid a custom script because I work at an MSP and end up remoting into machines across various domains in a day and so maintaining a selection of scripts across each is not trivial (unless you have a solution to that for me).

Unyoke answered 30/6, 2014 at 15:5 Comment(0)
F
37

Same as in command line, you can launch the RDP client as so:

mstsc /v:10.10.10.10:3389
Fults answered 30/6, 2014 at 15:15 Comment(1)
It is possible to put the server name as well ;)Pallium
S
9

From your desktop, you can start an RDP session pointing to a remote system with this:

Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "/v:$machinename"

Where $machinename is the name of the remote system. You will be prompted for credentials.

Stramonium answered 30/6, 2014 at 15:15 Comment(2)
Thanks, wish PS had a Start-RDPSession $machinename option instead. I think stuff like this demonstrates part of why PS is seeing slow adoption among the sysadmins around me. I wanted to accept both you and Raf. I gave it to Raf because I think his is the one I'll actually remember and I think most will prefer. Yours is the more precise answer though. Thanks!Unyoke
Write your own function that does what I wrote, call it that, put it in your $PROFILE or make your own module. That sort of extensibility should be speeding adoption, not hampering it.Stramonium
S
6

Here it is in function format. As alorc said. Paste this into your $profile

function Start-RDP ($computername)
{
    Start-Process "$env:windir\system32\mstsc.exe" -ArgumentList "/v:$computername"
}
Slaughterhouse answered 7/9, 2016 at 15:24 Comment(0)
S
4

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
Sibella answered 20/11, 2019 at 19:18 Comment(1)
I can't find any Get-VM cmdlet.Vetchling
O
3

at the console prompt type:

mstsc /v:SERVERNAME
Oystercatcher answered 30/6, 2014 at 15:16 Comment(0)
Q
1

Try using this command: mstsc /v:<server>

additionally you can check the following link for further reference:

https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/mstsc

Quach answered 21/6, 2021 at 14:13 Comment(0)
R
-3

If you are working with remote hosts in domain, u can use this command:

Enter-PSSession -ComputerName host1 -Credential Username

If not, u should execute some steps.

This link has many other options: http://www.howtogeek.com/117192/how-to-run-powershell-commands-on-remote-computers/

Royo answered 8/7, 2016 at 15:27 Comment(1)
This isn't an RDP session.Gunzburg

© 2022 - 2024 — McMap. All rights reserved.