Administrar Windows Powershell desde la terminal de Linux


31

Administro los servidores de Windows Server 2012. Estoy aprendiendo PowerShell para administrar estos servidores a través de la línea de comandos. Mi estación de trabajo ejecuta Ubuntu y generalmente administro servidores Linux conectándome a través de SSH.

¿Hay alguna manera de que pueda usar Windows PowerShell en los servidores de Windows desde mi estación de trabajo Linux a través de la línea de comandos como el acceso SSH en Linux?


Hay productos de terceros que proporcionan un servidor SSH para Windows con powershell como shell predeterminado. ej. powershellserver.com
Zoredache

66
Personalmente, prefiero administrar Windows desde una máquina Windows (virtual) y Linux desde una máquina Linux. Esto parece estar ayudando a preservar lo que queda de mi cordura.
Michael Hampton

Entiendo lo que está tratando de lograr, pero mientras pueda ejecutar comandos de PowerShell en un host de Windows, ¿no podría administrar los otros desde esa sesión de PS?
Andy

@ Andy - mi punto exactamente.
mfinni

Me estoy interesando en el proyecto Pash ( github.com/Pash-Project/Pash ). Quieren reimplementar PowerShell en Linux. Ahora estoy tratando de compilar en una máquina Raspberry Pi para ver si puedo emitir remotamente un comando de apagado
usr-local-ΕΨΗΕΛΩΝ

Respuestas:


15

Algunas opciones:

  1. Instale un servidor SSH en una máquina Windows, ingrese SSH, ejecute Powershell en el cuadro de Windows
  2. Ejecute un cliente RDP en Linux, RDP in, ejecute Powershell en el cuadro de Windows
  3. Utilice Powershell Web Access, acceda al servidor de puerta de enlace POSH WA con un navegador, ejecute Powershell a través del navegador

http://technet.microsoft.com/en-us/library/hh831611.aspx

No conozco ningún ejecutable POSH para Linux, por lo que no puede ejecutar comandos POSH directamente desde un shell en Linux: primero debe ingresar a la máquina Windows de alguna manera, como RDP, consola remota (DRAC, iLO), SSH, o acceso web POSH.

/ Editar: parece que hay algunas opciones. http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

Puede intentar que OpenWSMan haga lo que quiera, pero creo que tendría que elaborar cada comando como una solicitud de URL en lugar de simplemente emitir el comando Powershell correcto; como dije, no hay Powershell real para Linux. Puede instalar la gema ruby ​​de WinRB en cada máquina con Windows y luego ejecutar el código Ruby en su caja de Linux para llamar a los comandos de Powershell.

En ninguno de los casos parece que obtendrá la experiencia interactiva de Powershell, como completar pestañas, ayuda, etc. Estos parecen ser para ejecutar un script o un solo comando, y presumiblemente tendrá que capturar cualquier error u otro comentario por su cuenta No vas a obtener una solución de primera clase en Linux.

/ Editar de nuevo: sí, MSDN dice que esto tenderá a ser feo / torpe. Incluso la solución simple / efectiva que ofrece no parece divertida.

Aunque la comunicación remota Powershell está construida sobre WS-Management, en realidad es un protocolo dentro de un protocolo y tratar de interoperar con PSRP (Protocolo Remoto Powershell) directamente requeriría esencialmente replicar Powershell en el cliente.


Esto puede hacer el trabajo ... pero tengo que instalar el servidor SSH en cada servidor de Windows. Que yo sepa, PowerShel usa WS-Management, un estándar abierto ... ¿hay algún cliente Linux que haga este tipo de conexión?
Ederson

2
No señor. Una vez que tenga un shell en un cuadro de Windows (suponiendo que esté en el mismo dominio que los otros cuadros de Windows), puede usar Powershell Remoting. O puede usar DSC, Configuración de estado deseada. O puede estar trabajando en cosas como AD o MS Exchange que de todos modos no operan en un solo servidor, pero se conectan al directorio utilizando cualquier servidor DC o CAS disponible.
mfinni

2
Once you have a shell on a Windows box you can use Powershell Remoting.- Tenga en cuenta que seguramente se encontrará con el problema de autenticación de 2 saltos con esto. Es casi seguro que necesitará usar la autenticación CredSSP.
Zoredache

¿Se encontrará con este problema si persigue cualquiera de los dos primeros métodos? (Creo que sé) que no tienes este problema con RDP.
mfinni

1
Solo para tener en cuenta, Pash ( github.com/Pash-Project/Pash ) podría tener esta capacidad en algún momento, pero es probable que esté bastante lejos en el futuro. Todavía están tratando de implementar los conceptos básicos de PowerShell por ahora.
supercheetah


4

Sí, tienes 2 opciones:

  1. Puede instalar el servidor SSHd en Windows y en la ruta de configuración de configuración de PowerShell.

    Para esto, puede usar el tutorial para la instalación de SSHd y la configuración ruta de PowerShell.

    En breve:

    1. Instalar freeSSHd
    2. Agregue una nueva cuenta de usuario y permita el acceso SSH
    3. Habilitar el puerto SSH en el Firewall de Windows
    4. Configurar la ruta a PowerShell.exe
  2. Acceso web a PowerShell (solo Win Server 2012 R2)

    Ahí tienes un tutorial en Technet: blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx


Esto puede hacer el trabajo ... pero tengo que instalar y configurar el servidor SSH en cada servidor de Windows. Hasta donde yo sé, PowerShell usa WS-Management, un estándar abierto ... ¿hay algún cliente Linux que haga este tipo de conexión?
Ederson

Agregué una opción con enlace, si puedes 2012 R2, entonces esto puede ayudarte. Pero todavía no está "integrado" y con el cliente. Se accede a través del navegador.
zorbon.cz

3

Probado en Ubuntu 14.04 LTS

Descargue e instale winexe:

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

dpkg -i winexePTH1.1.0-1.deb

Uso básico

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

Como ejemplo:

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

2
Agregue algunos detalles más para explicar esta respuesta ...
Pierre.Vriens

2

También puede instalar win32-openSSH a mano desde https://github.com/PowerShell/Win32-OpenSSH o a través de Chocolatey https://chocolatey.org o incluso más rápido a través de Boxstarter (que utiliza Chocolatey bajo el capó) https: // boxstarter.org (instalación rápida https://boxstarter.org/packages/nr/win32-openssh ).

Requiere un poco de configuración, pero es un puerto win32 nativo (¡sí, de verdad!) Mantenido por los chicos de Microsoft que hacen PowerShell.

De lo contrario, como alguien mencionó, podría instalar la gema WinRM en Linux y obtener un poco de conectividad a través del protocolo WinRM, pero eso no es tan bueno como simplemente iniciar una PSSession.

Además, la gente detrás de la gema WinRM (WinRb) también está buscando implementar una interacción PowerShell más nativa que canalice PowerShell sobre WinRM, que será más funcional para las cargas y más rápido para otras operaciones. Vea esta publicación de blog, http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plaform-len

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.