#python #powershell
#питон #powershell
Вопрос:
При компиляции следующего кода с pyinstaller
использованием следующей команды
pyinstaller --onefile --uac-admin --noconsole test.py
он выдает следующую ошибку
File "os.py", line 985, in popen
File "subprocess.py", line 832, in __init__
File "subprocess.py", line 1267, in _get_handles
OSError: [WinError 6] The handle is invalid
но при компиляции того же кода без --noconsole
него все работает без каких-либо ошибок.
test.py
from os import popen
def test_ps():
result = popen('powershell.exe -encodedcommand ZQBjAGgAbwAgAGgAZQBsAGwAbwA= ').read()
return result
print(test_ps())
Конечная цель — выполнить команды powershell в скомпилированном скрипте pyinstaller без консоли с использованием опции --noconsole
ps команда encode предназначена просто echo hello
для декодирования строки
[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String('ZQBjAGgAbwAgAGgAZQBsAGwAbwA='))
Комментарии:
1. Сообщение об ошибке предполагает, что процесс PowerShell пытается получить доступ к консоли, которая по определению не существует, из-за
--noconsole
. Вместоos.popen()
этого вам, возможно , повезетsubprocess.Popen()
больше, что позволяет запускатьpowershell.exe
без участия оболочки по умолчанию (cmd.exe
) и позволяет настраивать привязку всех дескрипторов стандартного потока.