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

2471
James

Я пытаюсь подключиться к машине 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?

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

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

ИНФОРМАЦИЯ

  • ОС: Debian 8.10

  • $ PSVersionTable.PSVersion: 6.0.1

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

2

1 ответ на вопрос

2
postanote

Взгляните на 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

Спасибо за вашу помощь. Это действительно сработало. Еще одно замечание: этот подход SSH будет работать только с последними версиями Windows. James 6 лет назад 0
Я пометил этот ответ как правильный, поскольку он единственный, но было бы хорошо узнать альтернативу, которая работает со старыми версиями Windows, то есть решение для подключения к любой версии Windows через PowerShell в linux. James 6 лет назад 0
Не волнуйтесь. Но поймите, что этого не произойдет в ближайшее время. Утверждение «любая версия Windows» далеко не широкое. Существует мало причин для нацеливания на устаревшую неподдерживаемую Windows. Если бы вы сказали, все поддерживаемые версии Windows для бизнеса, я был бы склонен согласиться. Тем не менее, даже сегодня не все инструменты PoSH доступны во всех версиях Windows. v5 на Win7 - это не то же самое, что v5 на Win10, например, а v6 - далеко от v5x на Windows. Так что, как предложение OSS сейчас, это действительно зависит от сообщества. postanote 6 лет назад 0
Вы правы. Все версии Windows слишком широки, но решение, которое работает в некоторых старых версиях, было бы хорошо. James 6 лет назад 0

Похожие вопросы