You normally don't administer servers sitting in front of the physical box. This is both inconvenient and contradicts the basic principles of client-server architecture. The server, by definition, should devote its computing resources to serve client requests instead of attending to itself (or its operators).
It is a commonplace to manage a server and its applications remotely. This is especially true for (but definitely not limited to) a Server Core box.
There are generally many types of what can be classified as “Remote Management”. E.g. deploying software updates with ConfigMgr or monitoring server workload with OpsMgr is by all means “Management” and it obviously qualifies to be “Remote”. Connecting using some kind of KVM or BMC (e.g. iLO for HP servers or DRAC for Dell hardware) is another case. But for the context of this particular article three scenarios are particularly relevant.
The above list is in the order from most common to most recommended. This means that the first try should be an application-specific remote management. Most decent server applications support some kind of remote management with or without a special admin application (usually called a console) that can be deployed to the management station. Recently a clientless management became popular with increasing role of web-based admin interfaces.
Usually this method generates the least overhead on the remote managed server and provides the richest functionality. It also minimizes the learning curve since you don't need to learn complex command-line syntax or scripting. Instead, you continue to use the tools everyone is familiar with (which you maybe used to run on the server itself).
The downside of remote consoles is that they sometimes require complex firewall setup (especially in case third-party firewall solutions are used — either host-based or somewhere in between the server and your management station). For example a lot of consoles rely on RPC/DCOM which requires a whole bunch of high ports (known as Dynamic Port Range) to be open (allowed to pass).
If the remote console is not an option (either due to networking restrictions or there's simply no console for this particular task) try remote command-line management. You can choose from a wide list of available options.
Note. The above list is not complete. It represents only the most popular options in order from most recommended to most niche. There are obviously other less common options. E.g. VBS (legacy scripting language) has its own built-in option to execute scripts remotely which is both little known and little used due its complexity.
Exception. If the command-line application runs locally on your management station and manages the remote system using the application-specific protocol or API this qualifies for the first option (application-specific management), not this one.
Exception from the exception. Windows PowerShell introduces additional complexity in the latter scenario. In some cases the same Windows PowerShell session can combine cmdlets running locally with a specific set of cmdlets that look also local but are directly executed on the remote system.
Remote Command-Line management is also the obvious choice for all the normal cases where you'd want to use scripting. E.g. automating some routine and repetitive or rare and complex tasks.
The last resort is Remote Desktop. It is nearly bullet-proof. It is much more close to local management than to anything else called “Remote”. There is a number of reasons why, comparing with all the abovementioned options, it is not recommended for day-to-day usage.
With that said, there is obviously an endless list of uncommon tasks that can be only done using the “Nearly local” session. Obviously, Remote Desktop has a number of strong advantages over two abovementioned methods.
Vasily Gusev edited Original. Comment: Some correction in command line remote management