Conexão remota a um Windows via PowerShell no Linux

Conexão remota a um Windows via PowerShell no Linux

Estou tentando me conectar a uma máquina Windows via PowerShell em uma máquina Linux para obter algumas informações do sistema, mas preciso fazer isso sem usar o WinRm.

Primeiramente, instalei o PowerShell seguindo as instruçõesaqui. Iniciar o PowerShell pwshfuncionou bem.

Então tentei obter algumas informações através do WMI usando o seguinte comando:

Get-WmiObject -Class Win32_Process -Impersonation 3 -ComputerName IP_ADDRESS

O retorno é Get-WmiObject : The term 'Get-WmiObject' is not recognized as the name of a cmdlet, function, script file, or operable program..

Seguindo oregistro de alteraçõespara a versão 6.0 do núcleo do PowerShell, descobri que as funções Get-Wmi* deveriam ser substituídas por equivalentes Get-Cmi*. Vamos tentar:

Get-CimInstance -Class Win32_Process -Impersonation 3 -ComputerName IP_ADDRESS

O retorno é:Get-CimInstance : The term 'Get-CimInstance' is not recognized as the name of a cmdlet, function, script file, or operable program.

Procurando a lista de comandos, digitando Get-e depois Tab, o retorno de fato não mostra nenhuma função Wmi ou Cim.

Consigo me conectar ao mesmo computador usando o cmdlet Invoke-Command, mas como falei, preciso conseguir isso sem o uso do WinRm, e, aparentemente, esse não é o caso doInvocar-Comando

Depois de muita pesquisa no Google, encontrei apenas uma pergunta semelhanteaqui no SO, mas usa o cmdlet Enter-PSSession, que também é usadoWinRMse eu entendi corretamente.

Finalmente encontrei issopostagem no blogcom se ajusta como uma luva às minhas necessidades. Porém, sugere o uso dos cmdlets Invoke-WmiMethode Invoke-CimMethodque, para surpresa de ninguém, não são comandos reconhecidos.

Minha pergunta é: existe alguma maneira de executar uma consulta WMI para obter algumas informações do Windows por meio do PowerShell em uma máquina Linux sem o uso do WinRm?

Nota 1: consigo executar os Get-Wmi*cmdlets e Get-Cim*na máquina Windows PowerShell (conectada via RPC, por exemplo);

Nota 2: Eu conheço umGambiarralidar com isso no Linux sem PowerShell e deve funcionar para alguém com problema semelhante, mas não funcionou para mim devido a um problema insolúvel (por enquanto, pelo menos)problema de codificação;

INFORMAÇÕES

  • SO: Debian 8.10

  • $PSVersionTable.PSVersion: 6.0.1

  • Windows remoto: W10 Pro

Responder1

Procure PoSH sobre SSH.

Veja o passo a passo aqui:

Comunicação remota do PowerShell por SSH

Visão geral

A comunicação remota do PowerShell normalmente usa WinRM para negociação de conexão e transporte de dados. O SSH foi escolhido para esta implementação de comunicação remota, pois agora está disponível para plataformas Linux e Windows e permite uma verdadeira comunicação remota PowerShell multiplataforma. No entanto, o WinRM também fornece um modelo de hospedagem robusto para sessões remotas do PowerShell, o que esta implementação ainda não oferece. E isso significa que a configuração do endpoint remoto do PowerShell e o JEA (Just Enough Administration) ainda não são suportados nesta implementação.

A comunicação remota SSH do PowerShell permite que você faça a comunicação remota básica da sessão do PowerShell entre máquinas Windows e Linux. Isso é feito criando um processo de hospedagem do PowerShell na máquina de destino como um subsistema SSH. Eventualmente, isso será alterado para um modelo de hospedagem mais geral, semelhante ao modo como o WinRM funciona, a fim de oferecer suporte à configuração de endpoint e JEA.

Os cmdlets New-PSSession, Enter-PSSession e Invoke-Command agora têm um novo conjunto de parâmetros para facilitar esta nova conexão remota

https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting

Atualizado em relação ao comentário de Anthony Geoghegan

Quanto a ---

'Isso parece promissor, mas o link para o repositório GitHub não funciona mais.'

---- O link é direto para o repositório MS PS, então, sim, é estranho que um 404 esteja acontecendo. De qualquer forma, você pode obter isso diretamente no seu sistema usando o PowerShell.

De qualquer forma …

Find-Module -Name '*ssh*' | Format-table -AutoSize

# Results


Version Name                         Repository Description                                                                                                
------- ----                         ---------- -----------                                                                                                
2.1     Posh-SSH                     PSGallery  Provide SSH and SCP functionality for executing commands against remote hosts.                             
0.0.2.0 OpenSSHUtils                 PSGallery  Utilities and functions for configuring OpenSSH on Windows.                                                
2.1.3   SSHSessions                  PSGallery  Svendsen Tech's SSH-Sessions module provides SSH session creation, management and interaction from Power...
1.0.0   SSH                          PSGallery  Provides a PowerShell-based SSH client based on SSH.net  http://sshnet.codeplex.com/                       
0.0.75  PSSharedGoods                PSGallery  Module covering functions that are shared within multiple projects                                         
1.1.3   PowerSSH                     PSGallery  This module detects the first use of an SSH command, automatically runs the SSH agent, keeps the SSH aut...
0.9.5   WinSSH                       PSGallery  Install OpenSSH-Win64, optionally install ssh-agent and sshd Services. Also includes functions to help c...
1.0.1   ssh-wrapper                  PSGallery  Exposes ssh from WSL by wrapping: bash -c "ssh $args". Requires Windows Subsystem for Linux on Windows 10. 
0.3.1   posh-sshell                  PSGallery  Provides integration with ssh-agent and pageant from within Powershell                                     
2.0.1.8 SkypeForBusinessHybridHealth PSGallery  Uses on-premises modules such as Skype For Business and SkypeOnlineConnector to validate basic requireme...
1.0.4   PSShortcut                   PSGallery  This module eases working with Windows shortcuts (LNK and URL) files.                                      
1.1.4   PowerSSH-Legacy              PSGallery  This module detects the first use of an SSH command, automatically runs the SSH agent, keeps the SSH aut...
1.0     cEPRSSharepoint              PSGallery  DSCModule helps in installing & configuring the sharepoint site, Farm etc.,                                
0.0.3   dockeraccesshelper           PSGallery  Allow a user account to access the docker engine without elevated access rights                            
0.3     PSShareFile                  PSGallery  A PowerShell module to manipulate various objects in Citrix's ShareFile service                            
0.0.1   PSSherpaDesk                 PSGallery  PowerShell module for interacting with the SherpaDesk API  


Find-Module -Name '*Posh-SSH' | 
Save-Module -Path "$env:USERPROFILE\Documents\WindowsPowerShell\Modules" 
Install-Module -Name 'Posh-SSH'

Use este link para demonstração do SSHRemoting

Acabei de acertar, então sei que funciona.

Veja estes vídeos do YouTube PowerShell SSH Remoting em ação.

informação relacionada