та же команда выводит различный вывод в терминале по сравнению с PyCharm Python 3.7.3 на WIndows 10? - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу выполнить эту команду: powershell.exe -Command "Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher | Sort DisplayName -Unique", используя Python 3.7.3 в Pycharm IDE. Я получаю разные результаты, если я вырезал и вставлял ту же команду в Терминале, даже терминал в Pycharm IDE даст правильные результаты:

DisplayName                                                                         DisplayVersion     Publisher
-----------                                                                         --------------     ---------

Avatier Credential Provider                                                         10.6.18080         Avatier Corporation
Avatier SetUpCachedCred 64-bit                                                      1.0.6              Avatier
.....

, но при запуске фреймворка, выполнив эту же команду либо через os.system ( cmd) или subprocess.Popen (...), subprocess.check_output (...), я получаю разные результаты, например, так:

DisplayName                                                        DisplayVersion   Publisher                        
-----------                                                        --------------   ---------                        

Adobe Acrobat Reader DC                                            20.006.20042     Adobe Systems Incorporated       
Adobe Refresh Manager                                              1.8.0            Adobe Systems Incorporated       
BootRacer 7.90                                                     7.90             Greatis Software                 
Carbon Black Sensor                                                6.2.2.90503      Carbon Black, Inc.
...

Это на той же физической машине, Windows 10, 1909 год постройки. Пожалуйста, помогите с обходным путем и / или решения.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

нет, мои результаты с использованием вашего кода были другими, и он был слишком велик для вставки в разделы комментариев. его python работает оболочка подпроцесса, работает PowerShell. Я задавался вопросом, есть ли что-то в списке через буферизацию? Это может быть проблема доступа / разрешения / безопасности? Даже запуск сценария python через терминал дает другие результаты, чем выполнение команды напрямую через powershell на терминале. Имеет также с Python. Я использую python 3.7.3 32 ноута на windows 10. Спасибо.

0 голосов
/ 24 апреля 2020

Может показаться, что, несмотря на то, что вы думаете, вы на самом деле не выполняете команду там, где вы думаете.

Когда я запускаю это:

import subprocess

args = [
    r'powershell.exe',
    r'-Command',
    r'Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher | Sort DisplayName -Unique'
]

result = subprocess.run(args, capture_output=True)

print(result.stdout.decode('windows-1252'))

( либо из PyCharm, либо из командной строки с python test.py)

При выполнении этого я получаю следующий или идентичный результат:

powershell.exe -Command "Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher | Sort DisplayName -Unique"

(непосредственно из командной строки)

Единственная реальная разница в окончаниях строк, но это не ваша проблема.

...