Содержимое моего файла 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.