web-dev-qa-db-fra.com

Gestion de Windows Powershell depuis un terminal Linux

Je gère des serveurs Windows Server 2012. J'apprends à PowerShell à gérer ces serveurs via la ligne de commande. Ma station de travail utilise Ubuntu et je gère généralement les serveurs Linux en me connectant via SSH.

Existe-t-il un moyen d'utiliser Windows PowerShell sur les serveurs Windows à partir de mon poste de travail Linux via la ligne de commande comme l'accès SSH sous Linux?

31
Ederson

Quelques options:

  1. Installer un serveur SSH sur une machine Windows, SSH dans, exécuter Powershell sur la boîte Windows
  2. Exécutez un client RDP sous Linux, RDP dans, exécutez Powershell sur la boîte Windows
  3. Utilisez Powershell Web Access, frappez le serveur de passerelle POSH WA avec un navigateur, exécutez Powershell via le navigateur

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

Je ne connais aucun exécutable POSH pour Linux, vous ne pouvez donc pas exécuter de commandes POSH directement à partir d'un shell sous Linux - vous devez d'abord accéder à la machine Windows, comme RDP, console distante (DRAC, iLO), SSH, ou POSH Web Access.

/ Edit- semble qu'il y a quelques options. http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

Vous pouvez essayer d'obtenir qu'OpenWSMan fasse ce que vous voulez, mais je pense que vous devrez créer chaque commande comme une demande d'URL plutôt que de simplement émettre la commande Powershell correcte - comme je l'ai dit, il n'y a pas vraiment de Powershell pour Linux. Vous pouvez installer le WinRB Ruby gem sur chaque machine Windows, puis exécuter Ruby code sur votre boîte Linux pour appeler les commandes Powershell).

Dans aucun des cas, il ne semble que vous obtiendrez l'expérience Powershell interactive, comme la complétion de tabulation, l'aide, etc. Ceux-ci semblent être pour exécuter un script ou une seule commande, et vous devrez probablement capturer toutes les erreurs ou autres commentaires tout seul. Vous n'allez pas obtenir une solution de première classe sous Linux.

/ Modifier à nouveau - oui, MSDN dit que cela aura tendance à être laid/maladroit. Même la solution simple/efficace qu'il donne ne semble pas amusante.

Bien que la communication à distance Powershell soit basée sur WS-Management, c'est vraiment un protocole dans un protocole et essayer d'interagir directement avec PSRP (Powershell Remoting Protocol) nécessiterait essentiellement la réplication de Powershell sur le client.

15
mfinni

Microsoft publie officiellement Powershell sur Linux et OSX. Voir l'annonce d'août 2016: PowerShell est open source et est disponible sur Linux

Il est actuellement en alpha. Ubuntu et Centos sont officiellement pris en charge, plus en cours de route. Si vous êtes aventureux, les instructions d'installation sont disponibles ici: https://github.com/PowerShell/PowerShell/blob/master/docs/installation/linux.md

6
Samuel Jaeschke

Oui, vous avez 2 options:

  1. Vous pouvez installer le serveur SSHd sur Windows et dans le chemin d'installation de configuration vers PowerShell.

    Pour cela, vous pouvez utiliser un didacticiel pour installation de SSHd et configuration chemin PowerShell.

    En bref:

    1. Installer freeSSHd
    2. Ajouter un nouveau compte d'utilisateur et autoriser l'accès SSH
    3. Activer le port SSH dans le pare-feu Windows
    4. Configurer le chemin d'accès à PowerShell.exe
  2. Accès Web PowerShell (uniquement Win Server 2012 R2)

    Vous avez là un didacticiel sur Technet - blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx

4
zorbon.cz

Testé dans Ubuntu 14.04 LTS

Téléchargez et installez winexe:

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

dpkg -i winexePTH1.1.0-1.deb

Utilisation basique

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

Par exemple:

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

Vous pouvez également installer win32-openSSH à la main depuis https://github.com/PowerShell/Win32-OpenSSH ou via Chocolatey https://chocolatey.org ou encore plus rapide via Boxstarter (qui utilise Chocolatey sous le capot) https://boxstarter.org (installation rapide https://boxstarter.org/packages/nr/win32-openssh ) .

Cela prend un peu de configuration, mais c'est un port Win32 natif (ouais, pour de vrai!) Maintenu par les gars de Microsoft qui font PowerShell.

Sinon, comme quelqu'un l'a mentionné, vous pouvez installer la gemme WinRM sur Linux et obtenir un peu de connectivité via le protocole WinRM, mais ce n'est pas aussi agréable que de démarrer une session PSSession.

De plus, les gens derrière la gemme WinRM (WinRb) envisagent également d'implémenter une interaction PowerShell plus native qui tunnelise PowerShell sur WinRM qui sera plus fonctionnel pour les téléchargements et plus rapide pour les autres opérations également. Voir cet article de blog, http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-Ruby-cross-plaform-len =

2
dragon788