从Linuxterminalpipe理Windows Powershell

我pipe理Windows Server 2012服务器。 我正在学习PowerShell来通过命令行来pipe理这些服务器。 我的工作站运行Ubuntu,通常通过SSH连接pipe理Linux服务器。

有没有一种方法可以在Windows服务器上使用Windows PowerShell,从Linux工作站通过命令行(如Linux上的SSH访问)?

一些选项:

  1. 在Windows机器上安装SSH服务器,使用SSH,在Windows机器上运行Powershell
  2. 在Linux上运行RDP客户端,在Windows上运行RDP,运行Powershell
  3. 使用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命令 – 正如我所说的那样,没有实际的PowerShell for Linux。 您可以在每台Windows机器上安装WinRB rub​​y​​ gem,然后在您的Linux机器上运行Ruby代码来调用Powershell命令。

在任何情况下,您似乎都不会获得交互式Powershell体验,比如制表符完成,帮助等等。这些似乎是用于运行脚本或单个命令,并且您大概必须捕获任何错误或其他反馈在你自己的。 你不会在Linux上获得一stream的解决scheme。

/再次编辑 – 是的, MSDN说 ,这往往是丑陋的/笨重的。 即使他给出的简单/有效的解决scheme看起来没有乐趣。

尽pipePowershell远程处理是build立在WS-Management之上的,但它实际上是协议内的协议,并试图直接与PSRP(Powershell远程协议)进行互操作,这本质上需要在客户端上复制Powershell。

微软正式发布Linux和OSX上的Powershell。 查看2016年8月的公告: PowerShell是开源的,可在Linux上使用

它目前在阿尔法。 Ubuntu和Centos正式支持,更多的方式。 如果你喜欢冒险,可以在这里find安装说明: https : //github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md

是的,你有两个select:

  1. 你可以在Windows上安装SSHd服务器,并在configuration中设置PowerShell的path。

    为此,您可以使用教程来安装SSHd和configuration PowerShellpath。

    简而言之:

    1. 安装freeSSHd
    2. 添加新的用户帐户并允许SSH访问
    3. 在Windows防火墙中启用SSH端口
    4. configurationPowerShell.exe的path
  2. PowerShell Web访问(仅限Win Server 2012 R2)

    在Technet上你有一个教程 – blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx

testing在Ubuntu 14.04 LTS

下载并安装winexe:

 wget https://passing-the-hash.googlecode.com/files/winexePTH1.1.0-1.deb dpkg -i winexePTH1.1.0-1.deb 

基本用法

 winexe -U DOMAIN/USERNAME%PASSWORD //MACHINEIP "cmd.exe" 

举个例子:

 echo -ne '\n' | winexe -U DOMAIN/USERNAME%PASSWORD //IP 'powershell.exe -command "Get-Process | Select-Object Name, ProcessName"' | sort -u 

你也可以通过https://github.com/PowerShell/Win32-OpenSSH或者通过Chocolatey https://chocolatey.org手动安装win32-openSSH,或者通过Boxstarter(利用引擎盖下的Chocolatey)来更快的安装https&#xFF1A:// 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-len