
Eugine
28.06.2018
21:10:19
там все кнопочки любят
ну вот платное да
хз в общем, атласциан это не моё, так что не подскажу


Suren
29.06.2018
07:22:05
можно без пайпов:
D:\>type ps.py
import sys, subprocess
script = '''\
Write-Host "hello, world"
$csp = gwmi win32_computersystemproduct
$csp | fl
'''
out = subprocess.check_output(['powershell.exe', '-NoProfile', '-Command', script])
print(out.decode('cp866'))
D:\>py -2 ps.py
hello, world
IdentifyingNumber : System Serial Number
Name : System Product Name
Vendor : System manufacturer
Version : System Version
Caption : Компьютерная система
D:\>py -3 ps.py
hello, world
IdentifyingNumber : System Serial Number
Name : System Product Name
Vendor : System manufacturer
Version : System Version
Caption : Компьютерная система
через
completed_process = subprocess.run(
[PS_PATH, cmd_line],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
encoding='cp866'
)
хеллоуворлд печатает, а вот снаппин не может подключить. то есть то же самое, с чего я и начал вчера вечером - просто не подтягивает снаппин будто его нет

Google

Suren
29.06.2018
07:22:06

Zart
29.06.2018
07:32:32
в cmd_line что?

Suren
29.06.2018
07:34:15
в cmd_line что?
да это script
script = '''Write-Host "Hello, World!"
Write-Host "hello, world"
$csp = gwmi win32_computersystemproduct
$csp | fl
'''

Zart
29.06.2018
07:34:50
ну

Suren
29.06.2018
07:34:53
а если в первую строчку добавить Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010, то ошибка добавления
точнее вот эта ошибка

Zart
29.06.2018
07:35:33
я нихуя не понял
потому что когда ты псвершентейбл показывал - у тебя там были версии с 1.0 по 3.0
а ошибке что ты показываешь сейчас "нет такого снапина в версии 4"
ты сейчас другой павершелл запускаешь, судя по пс_патх в коде

Suren
29.06.2018
07:39:54
это печать из сабпроцесса

Google

Zart
29.06.2018
07:40:47
а когда ты вручную адд-снапин делаешь и все пашет - ты в какой версии?
вероятно надо будет вписать '-Version', '3' в аргументы

Suren
29.06.2018
07:42:07

Zart
29.06.2018
07:43:17
ну йоп... ошибки читать как бы надо

Suren
29.06.2018
07:43:41

Zart
29.06.2018
07:44:42
может не та битность
питон какой битности?

Suren
29.06.2018
07:45:40
может не та битность
кстати! я же когда на делфи подобное делал, с этой же проблемой столкнулся года полтора назад! и решилось билдом в 64!
питон какой битности?
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32
ща поставлю другой

Zart
29.06.2018
07:46:47
стоять

Suren
29.06.2018
07:47:37

Zart
29.06.2018
07:48:27
укажи для запуска r'C:\Windows\Sysnative\WindowsPowerShell\v1.0\powershell.exe'

Suren
29.06.2018
07:49:59

Zart
29.06.2018
07:50:26
в ран не прокатывает потому что это експлорер и он 64битный
сиснатив не существует
32битным процессам система втихаря систем32 маппит на сисвов64

Suren
29.06.2018
07:51:03

Google

Zart
29.06.2018
07:51:47
ты опять вчерашнюю хуйню наебенил, вместо того что я показывал

Suren
29.06.2018
07:54:15
не вчерашнюю, сегодняшнюю
билд х64 питоном привел к успеху, спасибо, я бы и не вспомнил уже наверное. в прошлый раз тоже с этим не один день бился
конкретно сейчас прокатило через subprocess.run(

Zart
29.06.2018
08:04:58
можно и из 32битного

Suren
29.06.2018
08:05:06

Zart
29.06.2018
08:05:15
просто у 32бит процессов работает виртуализация фс

Suren
29.06.2018
08:05:28
где почитать? разобраться бы

Zart
29.06.2018
08:05:34
мсдн
64бит процессы видят фс как есть
в систем32 лежат нативные 64бит бинарники
в сисвов64 лежат 32битные

Suren
29.06.2018
08:06:28
и какой нужно вызывать? чтобы нормально было
сейчас я обращаюсь к PS_PATH = 'C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\powershell.exe'

Zart
29.06.2018
08:07:04
но 32бит процессы видят систем32, который маппится на сисвов64 по факту
т.е. в 32бит питоне систем32 и сисвов64 будут выглядеть одинаково и содержать одни и те же 32бит файлы
для 32бит есть альяс sysnative, который маппится на реальный систем32
поставь 32+64 тотал коммандер, запусти оба, зайди в каталог винды и сравни
наглядно довольно

Suren
29.06.2018
08:10:08

Zart
29.06.2018
08:10:15
компат

Google

Zart
29.06.2018
08:10:22
в реестре всё еще сложнее

Suren
29.06.2018
08:10:23

Zart
29.06.2018
08:10:44
64битный питон проще, да

Suren
29.06.2018
08:10:56
значит так и оставлю

Zart
29.06.2018
08:10:57
но я уже показывал выше про сиснатив несколько раз

Suren
29.06.2018
08:11:04

Zart
29.06.2018
08:11:11
так не поэтому

Suren
29.06.2018
08:45:05
хм. так а в итоге есть нормальный способ открыть пайп, отправить команду, прочитать результат, следом отправить новую команду и снова прочитать результат? а то открытие повершелла и подгрузка снаппина заметно времени отжирают
через communicate пытался, но там лажа какая-то выходит
Cannot send input after starting communication
читал вот это https://stackoverflow.com/questions/28616018/multiple-inputs-and-outputs-in-python-subprocess-communicate , но решения проблемы не вижу для себя
а почему он тут в инпут огромную строчку передает? https://gist.github.com/hnakamur/86e05336b94bcc1da7a4

Zart
29.06.2018
09:01:36

Suren
29.06.2018
09:01:59

Zart
29.06.2018
09:02:09
коммуникейт ждёт пока процесс не пришлёт всё и не закроет пайп
поэтому второй коммуникейт бессмысленен - в этот момент если второй процесс еще и жив, то передавать уже ничего физически не может

Suren
29.06.2018
09:04:14
тестил и на бубунте и в венде

Google

Zart
29.06.2018
09:04:34
на убунте работать будет, если селектить дескрипторы

Suren
29.06.2018
09:04:37
печально, конечно. придется костылить

Zart
29.06.2018
09:04:48
я в душе ниибу зачем так сложно
было бы проще создать пачку пс1 файлов и тупо запускать powershell -noprofile -version x -file file.ps1
либо выкинуть павершелл на мороз и рулить через апи

ultranoise ?
29.06.2018
09:09:41
так ребята
есть вопрос по джанго (любой начиная с 1.8)
там в админке можно с related-widget-wrapper-link поднимать форму релейтед модели
никто не извращался чтобы поднимать это с доп параметрами?
потому что я не вижу как можно в кваргсы пропихнуть нужное
цель ебания джанги такая — есть форма в которой есть плюсик у релейтед поля, если его хуйнуть, он просто поднимает форму создания записи у той релейтед модели
но я так не хочу, мне нужно чтобы туда уходил инстанс и/или какие то мной определенные поля из исходной формы

Suren
29.06.2018
09:23:47