如何使用命令行界面连接到Windows服务器? (CLI)

特别是可以select在Server 2008及更高版本中安装Server Core ,通过CLI连接到Windows服务器的能力越来越强大,如果不是Windowspipe理员普遍使用的话。

实际上,每个Windows GUIpipe理工具都有一个连接到远程计算机的选项,但内置的Windows CLIcmd.exe )中没有这样的选项,这给出了最初的印象:这可能是不可能的。

是否可以使用CLI远程pipe理或pipe理Windows Server? 如果是的话,有什么select来实现这一目标?

有几个相当简单的选项可用于使用命令行远程pipe理远程Windows Server,包括几个本机选项。

原生选项:

  1. WinRS / WinRM的
    • Windows远程shell程序/pipe理工具是在命令行实用程序中远程pipe理远程Windows服务器的最简单方法,与大多数Windows命令行实用程序一样, ss64在其选项和语法上也有很好的一页 。
    • 尽pipe在Microsoft文档中没有明确说明,但是可以使用它来启动cmd.exe的远程实例,该远程实例在远程系统上创build交互式命令行,而不是作为在远程服务器上执行单个命令的命令行选项。
      • 与: winrs -r:myserver.mydomain.tld cmd
    • 这也是本地支持的选项,对于主要基于CLI的其他系统(* nix, BSD等)的pipe理员来说可能最为熟悉。
  2. 电源shell
    • 希望PowerShell不需要介绍,可以使用WMI (Windows Management Instrumentation)从CLIpipe理远程计算机。
    • PowerShell远程处理允许在远程计算机上执行Powershell脚本和命令。
    • 在使用WMI + PowerShell进行远程pipe理方面有很多很好的资源,比如The Scripting Guy的博客 , MSDN WMI Reference和ss64.com,它们都有一个PowerShell 2.0命令的索引 。
  3. 远程桌面
    • 可能不是第一个想到的作为Window CLI选项的第一件事,当然,使用mstsc.exe通过远程桌面协议( RDP )连接到服务器确实可以在远程服务器上使用命令行。
    • 通过RDP连接到服务器核心安装实际上是可能的,并且将提供与连接到控制台( cmd.exe的实例)相同的接口。
      • 这可能有点反直觉,因为服务器核心没有桌面或其他正常的Windowsshell选项,但petri.co.il上有一篇关于如何pipe理Server Core over RDP的快速文章 ,应该如此倾向。

stream行,非本地选项:

尽pipeWindows现在提供了一些通过CLI访问远程服务器的原生选项,但情况并非总是如此,因此,已经创build了许多颇受欢迎的第三方解决scheme。 下面三个最显着的是。

  1. 在Windows服务器上安装SSH

    • 如果你只需要SSH ,这也是一个select,并且有一个关于如何在Server 2008上安装OpenSSH的social.technet指南。
    • 可能对于其他系统(* nix, BSD等)的pipe理员来说非常有用,这些系统大量使用SSH来实现这个目的,即使只有Windows的pipe理员有一个terminal仿真器客户端(比如PuTTY )目标计算机的数量以及为每个计算机定制(或标准化)的设置。
  2. PSEXEC

    • 通过Windows CLI在Windows上执行远程命令的原始选项,这是优秀的SysInternals套件的一部分 。 作为Windowspipe理员中必不可less的“必备”软件包之一,SysInternals工具得到了广泛的尊重和使用,SyInternals被微软收购,而且这些工具现在得到了微软官方的支持。
    • 就像使用WinRS / RMPSExec可用于向远程服务器发出单个命令,或者在远程计算机上启动cmd.exe的交互式实例。
      • 与: psexec \\myserver.mydomain.tld cmd
    • 与其他选项一样,首先要确保PSExec实际上能够连接到目标机器 。
  3. 将一个实用程序文件夹添加到服务器,并将其值存储在%PATH%系统variables中

    • 正如在注释中已经注意到的那样,许多好的SysInternals程序可以在命令行上执行,并且针对远程系统,这不仅仅是SysInternals。
    • 基本上,将您喜爱的Windows实用程序包打包到您推送到所有服务器的文件夹中,然后将该文件夹添加到系统的%PATH%环境variables中 。 两者都可以通过GPO轻松完成。
      • (我包括SysInternals 套件 , PuTTY , WinDirStat和我发现自己重复使用的一堆自定义脚本)放入一个文件夹,将其推送到所有服务器
    • 很明显,这不仅仅是通过CLIpipe理Windows系统是有用的,但是我觉得它非常有用,我认为这是值得的。

只是为了完整性:尽pipe由于各种原因,它可能不是最好的解决scheme,但是每个Windows系统都支持Telnet服务,可以从function列表启用Telnet服务。

微软的telnet实现也支持NTLM身份validation,因此,与Unix系统的标准远程login不同,在使用networking时,不会在networking上发送明文密码。