2

Я пытаюсь подключиться к машине 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.PS Версия: 6.0.1

  • Удаленный Windows: W10 Pro

1 ответ1

2

Взгляните на PoSH, а не на SSH.

Смотрите шаг через здесь:

PowerShell Remoting через SSH

обзор

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .