Удаленное подключение к Windows через PowerShell в Linux

Удаленное подключение к Windows через PowerShell в Linux

Я пытаюсь подключиться к машине Windows через PowerShell на машине Linux, чтобы получить некоторую информацию о системе, но мне нужно сделать это без использования WinRm.

Сначала я установил PowerShell, следуя инструкциям.здесь. Запуск PowerShell pwshсработал нормально.

Затем я попытался получить некоторую информацию через WMI с помощью следующей команды:

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

Возврат составляет Get-WmiObject : The term 'Get-WmiObject' is not recognized as the name of a cmdlet, function, script file, or operable program..

Послежурнал измененийДля версии 6.0 ядра PowerShell я обнаружил, что функции Get-Wmi* следует заменить на эквиваленты Get-Cmi*. Давайте попробуем:

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

Возврат составляет:Get-CimInstance : The term 'Get-CimInstance' is not recognized as the name of a cmdlet, function, script file, or operable program.

Поискав список команд, набрав Get-и нажав Tab, в ответе действительно не отображается ни одна функция Wmi или Cim.

Я могу подключиться к тому же компьютеру с помощью командлета Invoke-Command, но, как я уже сказал, мне нужно сделать это без использования WinRm, и, судя по всему, это не тот случайInvoke-Comand

После долгих поисков в Google я нашел только один похожий вопросздесь в SO, но он использует командлет Enter-PSSession, который также используетWinRMесли я правильно понял.

Наконец-то я нашел этоСообщение блогас подходит как перчатка с моими потребностями. Однако, он предлагает использовать командлеты Invoke-WmiMethodи Invoke-CimMethod, что, к удивлению всех, не распознаются команды.

У меня такой вопрос: можно ли как-то выполнить запрос WMI, чтобы получить некоторую информацию Windows через PowerShell на Linux-машине без использования WinRm?

Примечание1: Я могу запускать командлеты Get-Wmi*и Get-Cim*на машине Windows PowerShell (например, подключенной через RPC);

Заметка 2: Я знаюобходной путьчтобы справиться с этим в Linux без PowerShell, и это должно сработать у кого-то с похожей проблемой, но это не сработало у меня из-за неразрешимой (по крайней мере, на данный момент)проблема кодирования;

ИНФОРМАЦИЯ

  • ОС: Debian 8.10

  • $PSVersionTable.PSVersion: 6.0.1

  • Удаленные окна: W10 Pro

решение1

Вместо этого рассмотрите PoSH вместо SSH.

Пошаговое руководство см. здесь:

Удаленное взаимодействие PowerShell через SSH

Обзор

PowerShell remoting обычно использует WinRM для согласования соединения и передачи данных. SSH был выбран для этой реализации remoting, поскольку он теперь доступен для платформ Linux и Windows и обеспечивает настоящий многоплатформенный PowerShell remoting. Однако WinRM также предоставляет надежную модель хостинга для удаленных сеансов PowerShell, чего эта реализация пока не делает. И это означает, что конфигурация удаленной конечной точки PowerShell и JEA (Just Enough Administration) пока не поддерживаются в этой реализации.

PowerShell SSH remoting позволяет вам выполнять базовый сеанс PowerShell remoting между машинами Windows и Linux. Это делается путем создания процесса хостинга PowerShell на целевой машине в качестве подсистемы SSH. В конечном итоге это будет изменено на более общую модель хостинга, похожую на то, как работает WinRM, для поддержки конфигурации конечной точки и JEA.

Командлеты New-PSSession, Enter-PSSession и Invoke-Command теперь имеют новый набор параметров для упрощения этого нового удаленного подключения.

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

Обновлено в связи с комментарием Энтони Гейгана

Что касается ---

«Это выглядит многообещающе, но ссылка на репозиторий GitHub больше не работает».

----Ссылка ведет прямо на репозиторий MS PS, так что, да, странно, что происходит 404. В любом случае, вы можете получить это напрямую в своей системе с помощью PowerShell.

В любом случае …

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'

Используйте эту ссылку для демонстрации SSHRemoting

Я только что это сделал, поэтому знаю, что это работает.

Посмотрите эти видеоролики на YouTube PowerShell SSH Remoting в действии.

Связанный контент