NetCmdlets: Remote Execution


There are a variety of ways to execute commands remotely in PowerShell and NetCmdlets supports most of them. With NetCmdlets you can execute commands remotely using SSH, Rexec, RShell, Telnet, and more!

Technology Cmdlet
SSH (Sexec) Invoke-SSH
Rexec Invoke-Rexec
Rshell Invoke-Rshell
Telnet Invoke-Telnet

Below you will find details and examples using the cmdlets that implement these technologies.

Invoke-SSH

For secure shell connections, NetCmdlets provides the Invoke-SSH cmdlet.
Below is an example of connecting to a remote SSH server to execute the “ls” command.

PS> invoke-ssh -server myserver -user myuser -password mypassword -command ls Do you want to trust the certificate presented? The server has presented the key below. Fingerprint: 59:52:C8:DB:C8:3A:FE:CF:9D:02:E3:31:3A:2C:11:E4 [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y Text EOL ---- --- AssemblyInfo.vb True Documents True EmptyFolder True Lance True test.exe True test.ps1 True test.txt True v6tests True v8tests True

The cmdlet will prompt you to accept the server’s host key as above by default.
To automatically accept the server’s host key without user interaction, set the SSHAccept parameter. For instance:

PS> invoke-ssh -server myserver -user myuser -password mypass -command ls -sshaccept 59:52:C8:DB:C8:3A:FE:CF:9D:02:E3:31:3A:2C:11:E4 Text EOL ---- --- AssemblyInfo.vb True Documents True EmptyFolder True Lance True test.exe True test.ps1 True test.txt True v6tests True v8tests True

For more information on options for accepting the server’s host, key please see the help for the SSHAccept parameter.

Invoke-Rexec and Invoke-Rshell

Rexec and Rshell (rsh.exe) already exist as command line applications, but until
now they did not return useful, easily scriptable objects in PowerShell.

Below is an example of using Invoke-Rexec to issue a directory listing command to
a remote rexec host:

PS> invoke-rexec -server server -user user -password pass -command "C:\WINDOWS\system32\cmd exe /c dir c:\" Text EOL ---- --- Volume in drive C has no label.... True Volume Serial Number is 6C32-6256... True ... True Directory of c:\... True ... True 12/13/2006 05:41 PM <DIR> Documents and Set... True 12/17/2006 12:04 PM <DIR> Inetpub... True 01/09/2007 03:06 PM <DIR> Program Files... True 12/17/2006 12:54 PM <DIR> share... True 12/17/2006 12:29 PM <DIR> Sun... True 01/21/2007 02:10 PM <DIR> TFTP-Root... True 01/09/2007 03:08 PM <DIR> Virtual Machines... True 01/17/2007 03:02 PM <DIR> WINDOWS... True 7 File(s) 851,124 bytes... True 13 Dir(s) 15,440,244,736 bytes free... True 13 Dir(s) 15,440,244,736 bytes free... True PS>

Similarly, the Invoke-Rshell cmdlet gives the same output:

PS> invoke-rexec -server server -user user -password pass -command "C:\WINDOWS\system32\cmd exe /c dir c:\"

Invoke-Telnet

The Invoke-Telnet cmdlet may be used to execute a command via a telnet session. The cmdlet will connect, authenticate, wait for the specified Shell prompt to be returned by the server, and then execute the command. For instance:

PS> invoke-telnet -user test -password test -server MyServer -command ls -shellprompt bash-2.05a$

It is necessary to supply the ShellPrompt parameter so that the cmdlet can send the command at the appropriate time, as this is not an interactive session.

We appreciate your feedback. If you have any questions, comments, or suggestions about this article please contact our support team at support@nsoftware.com.