
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 pwsh
funcionou 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-WmiMethod
e Invoke-CimMethod
que, 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.