Gerenciando o Windows Powershell a partir do terminal Linux

31

Eu gerencio servidores Windows Server 2012. Estou aprendendo o PowerShell a gerenciar esses servidores por meio da linha de comando. Minha estação de trabalho executa o Ubuntu e eu geralmente gerencio servidores Linux conectando via SSH.

Existe uma maneira de usar o Windows PowerShell em servidores Windows na minha estação de trabalho Linux através da linha de comando, como acesso SSH no Linux?

Ederson
fonte
Existem produtos de terceiros que fornecem um servidor SSH para Windows com PowerShell como shell padrão. por exemplo powershellserver.com
Zoredache 21/10
6
Pessoalmente, prefiro gerenciar o Windows a partir de uma máquina Windows (virtual) e o Linux a partir de uma máquina Linux. Isso parece estar ajudando a preservar o que resta da minha sanidade.
Michael Hampton
Eu entendo o que você está tentando alcançar, mas contanto que você possa executar comandos do PowerShell em um host do Windows, você não poderá gerenciar os outros dessa sessão do PS?
Andy
@ Andy - meu ponto exatamente.
mfinni
Estou me interessando pelo projeto Pash ( github.com/Pash-Project/Pash ). Eles querem reimplementar o PowerShell no Linux. Agora estou tentando compilar em uma máquina Raspberry Pi para ver se eu posso emitir remotamente um comando de desligamento
ΕΨΗΕΛΩΝ usr-local-

Respostas:

15

Algumas opções:

  1. Instale um servidor SSH em uma máquina Windows, faça o SSH, execute o PowerShell na caixa do Windows
  2. Execute um cliente RDP no Linux, RDP, execute o PowerShell na caixa do Windows
  3. Use o Powershell Web Access, acesse o servidor de gateway POSH WA com um navegador, execute o Powershell pelo navegador

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

Não conheço nenhum executável POSH para Linux, portanto, você não pode executar comandos POSH diretamente de um shell no Linux - primeiro você deve acessar a máquina Windows de alguma forma, como RDP, console remoto (DRAC, iLO), SSH, ou POSH Web Access.

/ Edit- parece que existem algumas opções. http://sharpcodenotes.blogspot.com/2014/01/running-powershell-commands-from-linux.html

Você pode tentar fazer com que o OpenWSMan faça o que quiser, mas acho que você teria que criar todos os comandos como uma solicitação de URL, em vez de simplesmente emitir o comando correto do Powershell - como eu disse, não há Powershell real para Linux. Você pode instalar a gema ruby ​​do WinRB em todas as máquinas Windows e, em seguida, executar o código Ruby na sua caixa Linux para chamar os comandos do Powershell.

Em nenhum dos casos parece que você obterá a experiência interativa do Powershell, como preenchimento de guias, ajuda etc. Isso parece ser para executar um script ou um único comando, e você presumivelmente precisará capturar erros ou outros comentários por si só. Você não terá uma solução de primeira classe no Linux.

/ Edite novamente - sim, o MSDN diz que isso tenderá a ser feio / desajeitado. Até a solução simples / eficaz que ele oferece não parece divertida.

Embora o sistema de comunicação remota do Powershell seja construído sobre o WS-Management, é realmente um protocolo dentro de um protocolo e tentar interoperar diretamente com o PSRP (Protocolo de Remoção do Powershell) exigiria essencialmente a replicação do Powershell no cliente.

mfinni
fonte
Isso pode fazer o trabalho ... mas eu tenho que instalar o servidor SSH em todos os Windows Server. Até onde eu sei, o PowerShel usa o WS-Management, um padrão aberto ... existe algum cliente Linux que faça esse tipo de conexão?
Ederson
2
Não senhor. Depois de ter um shell em uma caixa do Windows (supondo que esteja no mesmo domínio que as outras caixas do Windows), você pode usar o Powershell Remoting. Ou você pode usar DSC, Configuração do estado desejado. Ou você pode estar trabalhando em coisas como o AD ou o MS Exchange que não operam em um único servidor, mas se conectam ao diretório usando o servidor DC ou CAS disponível.
mfinni
2
Once you have a shell on a Windows box you can use Powershell Remoting.- Esteja ciente de que você certamente encontrará o problema de autenticação de 2 saltos com isso. Você quase certamente precisará usar a autenticação CredSSP.
Zoredache
Ele enfrentará esse problema se seguir um dos dois primeiros métodos? Eu (acho que) sei que você não tem esse problema usando o RDP.
mfinni
11
Apenas para observar, o Pash ( github.com/Pash-Project/Pash ) pode potencialmente ter esse recurso em algum momento, mas isso provavelmente estará bem distante no futuro. Eles ainda estão tentando apenas implementar o básico do PowerShell por enquanto.
supercheetah
4

Sim, você tem 2 opções:

  1. Você pode instalar o servidor SSHd no Windows e no caminho da instalação configurada para o PowerShell.

    Para isso, você pode usar o tutorial para instalação do SSHd e do caminho do PowerShell de configuração .

    Em resumo:

    1. Instale o freeSSHd
    2. Adicione uma nova conta de usuário e permita o acesso SSH
    3. Habilitar porta SSH no Firewall do Windows
    4. Configurar caminho para o PowerShell.exe
  2. PowerShell Web Access (somente Win Server 2012 R2)

    Lá você tem um tutorial sobre Technet - blogs.technet.com/b/canitpro/archive/2013/11/14/step-by-step-deploy-powershell-web-access.aspx

zorbon.cz
fonte
Isso pode fazer o trabalho ... mas eu tenho que instalar e configurar o servidor SSH em todos os Windows Server. Até onde eu sei, o PowerShell usa o WS-Management, um padrão aberto ... existe algum cliente Linux que faça esse tipo de conexão?
Edith
Eu adicionei uma opção com link, se você pode 2012 R2, isso pode ajudá-lo. Mas ainda não é "embutido" e com o cliente. Você acessa-o através do navegador.
Zorbon.cz 21/10
3

Testado no Ubuntu 14.04 LTS

Faça o download e instale o 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 um exemplo:

echo -ne '\n' | winexe -U DOMAIN/USERNAME%PASSWORD //IP 'powershell.exe -command "Get-Process | Select-Object Name, ProcessName"' | sort -u
eishv
fonte
2
Por favor, adicione mais alguns detalhes para explicar esta resposta ...
Pierre.Vriens
2

Você também pode instalar o win32-openSSH manualmente em https://github.com/PowerShell/Win32-OpenSSH ou através do Chocolatey https://chocolatey.org ou ainda mais rápido através do Boxstarter (que utiliza Chocolatey sob o capô) https: // boxstarter.org (instalação rápida https://boxstarter.org/packages/nr/win32-openssh ).

É preciso um pouco de configuração, mas é uma porta win32 nativa (sim, de verdade!) Mantida pelos funcionários da Microsoft que fazem o PowerShell.

Caso contrário, como alguém mencionou, você pode instalar o gem do WinRM no Linux e obter um pouco de conectividade através do protocolo WinRM, mas isso não é tão bom quanto iniciar uma PSSession.

Além disso, as pessoas por trás da gema WinRM (WinRb) também estão planejando implementar uma interação mais nativa do PowerShell que encapsula o PowerShell sobre o WinRM, que será mais funcional para uploads e mais rápido para outras operações. Consulte esta publicação do blog, http://www.hurryupandwait.io/blog/a-look-under-the-hood-at-powershell-remoting-through-a-ruby-cross-plaform-len

dragon788
fonte