Как выполнить команды powershell через python и выдать те же результаты, что и в терминале? - PullRequest
0 голосов
/ 28 апреля 2020

Содержимое моего файла psScript.ps1:

powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
powershell -Command "gp HKLM:\\Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\* | select DisplayName, DisplayVersion, Publisher | Format-Table -AutoSize | Out-String -Width 4096 > C:\\temp\\testOut.txt" 

Из терминала: я бы так запустил, и он дал правильный результат: powershell C:\\Users\\jnguyen19\\scratchPad\\psScript.ps1

Вывод команды терминала, первые несколько строк:

DisplayName                                                                    DisplayVersion     Publisher                    
-----------                                                                         --------------     ---------                    
Windows Driver Package - Plantronics, Inc. (usbser.ntamd64) Ports  (04/21/2009 5.1) 04/21/2009 5.1     Plantronics, Inc.            
Windows Driver Package - Cambridge Silicon Radio (CSRBC) USB  (10/26/2012 2.4.0.0)  10/26/2012 2.4.0.0 

Однако, всякий раз, когда бы я ни использовался в Python, Popen, Pipe, Subprocess, os.system, subprocess.run, subprocess.call, subproces.check_output, Я бы получил совершенно другой набор вывода?

python скрипт:

import subprocess, sys

f=open("C:\\temp\\textOut.txt", "w")
p = subprocess.Popen(["powershell.exe",
          "C:\\Users\\jnguyen19\\scratchPad\\psGetAppVersions.ps1"],stdout=f).communicate()

вывод из скрипта python, первые несколько строк:

DisplayName                                                                   DisplayVersion   Publisher                                                   
-----------                                                                   --------------   ---------                                                   
Cisco Webex Meetings                                                          40.2.8           Cisco Webex LLC                                             
Carbon Black Sensor                                                           6.2.2.90503      Carbon Black, Inc. 

Пожалуйста помогите, я потратил несколько дней, пытаясь с полдюжины предложенных решений на StackOverflow, но пока решение не работает с Python 3.7.3 на Windows 10.

...