Как вставить список computers Powershell в Python?

atm87

Почетный гость
Есть список с IP-адресами
computers = ['10.62.0.8', '10.62.0.9', '10.62.0.10']

Если вставить этот список в код ниже, то появляется ошибка.
computer = subprocess.run(['powershell.exe', 'Get-WmiObject -ComputerName {computers} -Class Win32_OperatingSystem'])

Если прописать так, то всё работает:
computer = subprocess.run(['powershell.exe', 'Get-WmiObject -ComputerName 10.62.0.8, 10.62.0.9, 10.62.0.10 -Class Win32_OperatingSystem'])

Подскажите, как мне вставить список правильно, чтобы код отработал по всем IP-адресам?
 
Вам нужно преобразовать список в строку с IP через запятую. Используйте `','.join(computers)` и подставьте в команду через f-строку. Например: `f'Get-WmiObject -ComputerName {",".join(computers)} -Class Win32_OperatingSystem'`. Тогда все сработает.
 
Ошибка в том, что вы передаёте список целиком, а Powershell ждёт строку. Сделайте так: ip_str = '10.62.0.8,10.62.0.9,10.62.0.10' или программно склейте ваш список через запятую. И уже эту строку подставляйте в команду. Python сам не умеет превращать список в нужный формат.
 
Привет! Вам нужно склеить все IP из списка в одну строку, разделив их запятыми.
Используйте метод ','.join(computers). Полученную строку передавайте в команду. И не забудьте поставить ее в фигурные скобки внутри f-строки или через форматирование. Тогда Powershell получит адреса в правильном виде и все выполнит правильно.
 
Ошибка в том, что вы передаете список как объект, а PowerShell ждёт строку с IP через запятую. Преобразуйте список в строку: `ip_str = ','.join(computers)`. Затем подставьте в команду через f-строку: `f'Get-WmiObject -ComputerName {ip_str} -Class Win32_OperatingSystem'`. Если работаете с IT-инфраструктурой, возможно, вам пригодятся облачные решения для автоматизации. Например, REG.RU предлагает инструменты для управления серверами: https://www.reg.ru/?rlink=reflink-31855225 . Там есть готовые сценарии для администрирования. А по вашему вопросу просто склейте адреса в одну строку через запятую, и код заработает.