Проблема PowerShell на Python

Рейтинг: 0Ответов: 1Опубликовано: 25.08.2023

Нужна помощь, не получается работать с powershell на пайтоне. Вот код:

import subprocess

def execute_powershell_script(script):
    completed_process = subprocess.run(['powershell', '-command', script], stdout=subprocess.PIPE, text=True)
    return completed_process.stdout

while True:
    command = input("Введите команду PowerShell: ")

    # Записать команду во временный скрипт
    script = f"{command}\n Get-Location"
    
    # Выполнить скрипт и получить результат
    result = execute_powershell_script(script)
    print(result)

Я выполняю команду ls и смотрю что нахожусь в директории D:\project\test дальше выполняю cd / и вижу что нахожусь теперь в D:\ но если снова посмотреть на ls то она возвращает на изначальную директорию D:\project\test каждая новая команда начинается с изначальной директории. Как решить эту проблему? Мне нужно перемещаться по директориям и просматривать содержимое а у меня постоянно с изначальной папки начинает

Мучал chatGPT и он выдает: Понял, в этом случае проблема связана с тем, что каждая команда subprocess.run() выполняется в отдельном процессе, и изменения рабочей директории, сделанные в одной команде, не сохраняются для других команд. НО КАК РЕШИТЬ? НЕ ПОЛУЧАЕТСЯ

Ответы

▲ 0

как вариант рассмотрите запись пути в переменную, а затем конкатенацией добавлять в скрипт, что то вроде:

import subprocess

path: str = ''

def execute_powershell_script(script, command):
    if 'cd' in command:
        path += command + ' & '
    completed_process = subprocess.run(['powershell', '-command', path+script], stdout=subprocess.PIPE, text=True)
    return completed_process.stdout

while True:
    command = input("Введите команду PowerShell: ")

    # Записать команду во временный скрипт
    script = f"{command}\n Get-Location"
    
    # Выполнить скрипт и получить результат
    result = execute_powershell_script(script, command)
    print(result)