Conexão remota a um Windows via PowerShell no Linux

2

Estou tentando conectar-me a uma máquina Windows através do PowerShell em uma máquina Linux para obter algumas informações do sistema, mas preciso alcançá-lo sem usar o WinRm.

Primeiramente, eu instalei o PowerShell seguindo as instruções aqui . Iniciar o PowerShell com pwsh funcionou bem.

Então eu 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 o changelog para a versão 6.0 do núcleo do PowerShell, descobri que o As funções Get-Wmi * devem 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 pela 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 eu disse, preciso alcançá-lo sem o uso do WinRm e, aparentemente, esse não é o caso de Invoke-Comand

Depois de muita pesquisa no Google, encontrei apenas uma pergunta semelhante aqui no SO , mas ele usa o cmdlet Enter-PSSession , que também usa WinRM se eu entendi corretamente.

Finalmente, eu encontrei este postagem no blog com ajustes como uma luva com minhas necessidades. No entanto, sugere o uso dos cmdlets Invoke-WmiMethod e Invoke-CimMethod que, para surpresa de ninguém, não são comandos reconhecidos.

A minha pergunta é: Existe alguma maneira de executar uma consulta WMI para obter algumas informações do Windows através do PowerShell em uma máquina Linux sem o uso do WinRm?

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

Note2 : conheço uma solução alternativa para lidar com no linux sem PowerShell e deve funcionar para alguém com problema semelhante, mas não funcionou para mim devido a um insolúvel (por agora, pelo menos) problema de codificação ;

INFO

  • SO: Debian 8.10

  • $ PSVersionTable.PSVersion: 6.0.1

  • Windows remoto: W10 Pro

por James 28.02.2018 / 20:40

1 resposta

2

Olhe para PoSH sobre SSH.

Veja o passo aqui:

PowerShell Remoting Over SSH

Overview

PowerShell remoting normally uses WinRM for connection negotiation and data transport. SSH was chosen for this remoting implementation since it is now available for both Linux and Windows platforms and allows true multiplatform PowerShell remoting. However, WinRM also provides a robust hosting model for PowerShell remote sessions which this implementation does not yet do. And this means that PowerShell remote endpoint configuration and JEA (Just Enough Administration) is not yet supported in this implementation.

PowerShell SSH remoting lets you do basic PowerShell session remoting between Windows and Linux machines. This is done by creating a PowerShell hosting process on the target machine as an SSH subsystem. Eventually this will be changed to a more general hosting model similar to how WinRM works in order to support endpoint configuration and JEA.

The New-PSSession, Enter-PSSession and Invoke-Command cmdlets now have a new parameter set to facilitate this new remoting connection

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

    
por 01.03.2018 / 08:05