Conexión remota a Windows a través de PowerShell en Linux

Conexión remota a Windows a través de PowerShell en Linux

Estoy intentando conectarme a una máquina con Windows a través de PowerShell en una máquina con Linux para obtener información del sistema, pero necesito lograrlo sin usar WinRm.

En primer lugar, instalé PowerShell siguiendo las instrucciones.aquí. Iniciar PowerShell pwshfuncionó bien.

Luego intenté obtener información a través de WMI usando el siguiente comando:

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

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

Siguiendo elregistro de cambiospara la versión 6.0 del núcleo de PowerShell, descubrí que las funciones Get-Wmi* deberían reemplazarse por equivalentes de Get-Cmi*. Intentemos:

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

La devolución es:Get-CimInstance : The term 'Get-CimInstance' is not recognized as the name of a cmdlet, function, script file, or operable program.

Al buscar la lista de comandos, escribir Get-y luego Tab, el resultado de hecho no muestra ninguna función Wmi o Cim.

Puedo conectarme a la misma computadora usando el cmdlet Invoke-Command, pero como dije, necesito lograrlo sin el uso de WinRm y, aparentemente, este no es el caso deComando de invocación

Después de mucha búsqueda en Google, solo encontré una pregunta similar.aquí en SO, pero usa el cmdlet Enter-PSSession, que también se usaWinRMsi entendí correctamente.

Finalmente encontré estoentrada en el blogcon se adapta como un guante a mis necesidades. Sin embargo, sugiere el uso de cmdlets Invoke-WmiMethody Invoke-CimMethodque, para sorpresa de nadie, no son comandos reconocidos.

Mi pregunta es: ¿Existe alguna forma de ejecutar una consulta WMI para obtener información de Windows a través de PowerShell en una máquina Linux sin el uso de WinRm?

Nota 1: Puedo ejecutar los cmdlets Get-Wmi*y Get-Cim*en una máquina Windows PowerShell (conectada a través de RPC, por ejemplo);

Nota 2: Yo sé unsolución alternapara solucionarlo en Linux sin PowerShell y debería funcionar para alguien con un problema similar, pero no funcionó para mí debido a un problema que no tiene solución (al menos por ahora)problema de codificacion;

INFORMACIÓN

  • SO: Debian 8.10

  • $PSVersionTable.PSVersion: 6.0.1

  • Windows remoto: W10 Pro

Respuesta1

En su lugar, busque PoSH sobre SSH.

Vea el paso a través de aquí:

Conexión remota de PowerShell a través de SSH

Descripción general

La comunicación remota de PowerShell normalmente utiliza WinRM para la negociación de conexiones y el transporte de datos. Se eligió SSH para esta implementación remota ya que ahora está disponible para plataformas Linux y Windows y permite una verdadera comunicación remota PowerShell multiplataforma. Sin embargo, WinRM también proporciona un modelo de alojamiento sólido para sesiones remotas de PowerShell que esta implementación aún no ofrece. Y esto significa que la configuración de puntos finales remotos de PowerShell y JEA (Just Enough Administration) aún no son compatibles con esta implementación.

La comunicación remota PowerShell SSH le permite realizar sesiones remotas básicas de PowerShell entre máquinas Windows y Linux. Esto se hace creando un proceso de alojamiento de PowerShell en la máquina de destino como un subsistema SSH. Con el tiempo, esto se cambiará a un modelo de alojamiento más general similar a cómo funciona WinRM para admitir la configuración de terminales y JEA.

Los cmdlets New-PSSession, Enter-PSSession e Invoke-Command ahora tienen un nuevo conjunto de parámetros para facilitar esta nueva conexión remota.

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

Actualizado con respecto al comentario de Anthony Geoghegan

Como para ---

"Parece prometedor, pero el enlace al repositorio de GitHub ya no funciona".

----El enlace es directo al repositorio de MS PS, así que sí, es extraño que esté sucediendo un 404. De cualquier manera, puede obtener esto directamente en su sistema usando PowerShell.

De todos modos …

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'

Utilice este enlace para una demostración de SSHRemoting

Simplemente lo golpeé, entonces sé que funciona.

Vea estos videos de YouTube PowerShell SSH Remoting en acción.

información relacionada