If you are in a domain environment, you can also use:
winrs -r:PCNAME cmd
This will open a remote command shell.
Answer from user3744855 on Stack OverflowCommand to enable Remote Desktop using CMD
Could I access a Windows computer's command prompt of a specific user without interrupting RDP?
Remote Command Prompt
Launching command prompt on remote computer
Videos
I run a few applications on a remote computer. It's running Windows 10.
Typically, we are given RDP credentials or AnyDesk to connect to the computer, we run our updates and log out.
However, now it seems that one other person is using the computer at all times and I am unable to connect to it to have my applications running.
I only need to upload a few files and run them onbackground. On a Linux machine, I would use SCP and SSH along with TMUX to have the program running on background.
Is there something like that I could do on Windows? Otherwise, what are my options?
Thanks.
I've done some searching on the forums and MS official documentation and can't find anything specific.
Is is possible to open a command prompt to a device from the host pc? The reason is, I would like to run commands remotely and see the outputs without having any impact the users who are currently using the pc. For example run an ipconfig on a users pc and have the results displayed through sccm on my machine.
Everything I have found online are for this has the cmd open on the users pc which would interrupt their workflow which I'd like to avoid.
EDIT: Thanks for the replies everyone. CMPivot solved the problem I was having but will be looking into RCT as well. Much appreciated.
I think you're looking for PsExec
This is what you'd do to execute a CLI program on a remote computer using PsExec:
psexec \\REMOTECOMPUTER "path_to_program_executable"
You can learn more about PsExec and its various options along with some examples here
On more option is the built in winrs
winrs.exe -r:<RemoteComputerName> <TheCommandToRun>
winrs.exe -r:MyRemoteServer ipconfig
winrs vs. psexec
advantages winrs
- Built in, no download needed
- Faster and more reliable than psexec
advantages psexec
- Works with IP (winrs needs the computername (NetBIOS name) of the machine)
- Can run processes in system-context
Hey all,
So I've been working on a script that updates some PCs. Unfortunately, for this particular update I need visual feed back. I'm essentially running it through command prompt using new-pssession. However, CMD.exe looks like it launches in the background when done this way.
Is there a way I can have it actually open on the remote machine with the user signed in?
Use Powershell Remoting:
Updated link: https://docs.microsoft.com/en-us/powershell/scripting/learn/remoting/running-remote-commands?view=powershell-7
Copy pasted form an older version:
Windows PowerShell Remoting
Windows PowerShell remoting, which uses the WS-Management protocol, lets you run any Windows PowerShell command on one or many remote computers. It lets you establish persistent connections, start 1:1 interactive sessions, and run scripts on multiple computers. To use Windows PowerShell remoting, the remote computer must be configured for remote management. After you have configured Windows PowerShell remoting, many remoting strategies are available to you. The remainder of this document lists just a few of them. #Start an Interactive Session To start an interactive session with a single remote computer, use the Enter-PSSession cmdlet. For example, to start an interactive session with the Server01 remote computer, type:
Enter-PSSession Server01
The command prompt changes to display the name of the computer to which you are connected. From then on, any commands that you type at the prompt run on the remote computer and the results are displayed on the local computer.
To end the interactive session, type:
Exit-PSSession
#Run a Remote Command
To run any command on one or many remote computers, use the Invoke-Command cmdlet. For example, to run a Get-UICulture command on the Server01 and Server02 remote computers, type:
invoke-command -computername Server01, Server02 {get-UICulture}
The output is returned to your computer.
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) server01.corp.fabrikam.com
1033 en-US English (United States) server02.corp.fabrikam.com
#Run a Script
To run a script on one or many remote computers, use the FilePath parameter of the Invoke-Command cmdlet. The script must be on or accessible to your local computer. The results are returned to your local computer.
For example, the following command runs the DiskCollect.ps1 script on the Server01 and Server02 remote computers.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
#Establish a Persistent Connection
To run a series of related commands that share data, create a session on the remote computer and then use the Invoke-Command cmdlet to run commands in the session that you create. To create a remote session, use the New-PSSession cmdlet.
For example, the following command creates a remote session on the Server01 computer and another remote session on the Server02 computer. It saves the session objects in the $s variable.
$s = new-pssession -computername Server01, Server02
Now that the sessions are established, you can run any command in them. And because the sessions are persistent, you can collect data in one command and use it in a subsequent command.
For example, the following command runs a Get-Hotfix command in the sessions in the $s variable and it saves the results in the $h variable. The $h variable is created in each of the sessions in $s, but it does not exist in the local session.
invoke-command -session $s {$h = get-hotfix}
Now you can use the data in the $h variable in subsequent commands, such as the following one. The results are displayed on the local computer.
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }
Try tunnellier from Bitvise. That is an ssh client. There's also an ssh server for connecting to a windows machine. The two enable you to make very secure connections along with more advanced things like a web proxy or port tunneling.