我管理 Windows Server 2012 服务器。我正在学习使用 PowerShell 通过命令行管理这些服务器。我的工作站运行 Ubuntu,我通常通过 SSH 连接来管理 Linux 服务器。
有没有办法让我可以从 Linux 工作站通过命令行使用 Windows 服务器上的 Windows PowerShell,就像 Linux 上的 SSH 访问一样?
答案1
一些选项:
- 在 Windows 机器上安装 SSH 服务器,通过 SSH 登录,在 Windows 机器上运行 Powershell
- 在 Linux 上运行 RDP 客户端,在 RDP 中,在 Windows 机器上运行 Powershell
- 使用 Powershell Web Access,通过浏览器访问 POSH WA 网关服务器,通过浏览器运行 Powershell
http://technet.microsoft.com/en-us/library/hh831611.aspx
我不知道 Linux 有任何 POSH 可执行文件,所以您不能直接从 Linux 中的 shell 运行 POSH 命令 - 您必须首先以某种方式进入 Windows 机器,例如 RDP、远程控制台(DRAC、iLO)、SSH 或 POSH Web Access。
/编辑-看起来有一些选项。 http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html
您可以尝试让 OpenWSMan 执行您想要的操作,但我认为您必须像 URL 请求一样精心设计每个命令,而不是简单地发出正确的 Powershell 命令 - 正如我所说,Linux 没有真正的 Powershell。您可以在每台 Windows 机器上安装 WinRB ruby gem,然后在 Linux 机器上运行 Ruby 代码来调用 Powershell 命令。
在任何一种情况下,您似乎都不会获得交互式 Powershell 体验,例如制表符补全、帮助等。这些似乎用于运行脚本或单个命令,您可能必须自己捕获任何错误或其他反馈。您不会在 Linux 上获得一流的解决方案。
/再次编辑-是的,MSDN说这会变得丑陋/笨重。即使他给出的简单/有效的解决方案看起来也不好玩。
尽管 Powershell 远程处理建立在 WS-Management 之上,但它实际上是协议中的协议,尝试直接与 PSRP(Powershell 远程处理协议)互操作本质上需要在客户端上复制 Powershell。
答案2
微软正式在 Linux 和 OSX 上发布 Powershell。请参阅 2016 年 8 月的公告:PowerShell 是开源的,可在 Linux 上使用
目前处于 alpha 阶段。Ubuntu 和 Centos 已获得官方支持,更多支持正在开发中。如果您喜欢冒险,可在此处找到安装说明:https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md
答案3
是的,您有两个选择:
您可以在 Windows 上安装 SSHd 服务器,并在配置中设置 PowerShell 的路径。
为此,您可以使用教程安装 SSHd和 配置PowerShell 路径。
简而言之:
- 安装 freeSSHd
- 添加新用户账户并允许 SSH 访问
- 在 Windows 防火墙中启用 SSH 端口
- 配置 PowerShell.exe 的路径
PowerShell Web 访问(仅限 Win Server 2012 R2)
Technet 上有一个教程——blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx
答案4
您也可以手动安装 win32-openSSHhttps://github.com/PowerShell/Win32-OpenSSH或通过 Chocolateyhttps://chocolatey.org或者通过 Boxstarter 以更快的速度运行(其底层利用了 Chocolatey)https://boxstarter.org(快速安装https://boxstarter.org/packages/nr/win32-openssh)。
它需要一些设置,但它是一个本机的(是的,真的!)win32 端口,由 Microsoft PowerShell 人员维护。
否则,正如有人提到的,您可以在 Linux 上安装 WinRM gem,并通过 WinRM 协议获得一点连接,但这并不像启动 PSSession 那么好。
此外,WinRM gem(WinRb)背后的人们也在考虑实现一种更原生的 PowerShell 交互,通过 WinRM 隧道传输 PowerShell,这将使上传功能更加强大,其他操作也更快。请参阅此博客文章:http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plaform-lens