Запуск скриптов PowerShell с Python в течение одного сеанса

Я пытаюсь создать программу на python, которая будет деобфусцировать вредоносное ПО PowerShell, которое использует IEX. Моя программа на Python на самом деле перехватывает функцию IEX и вместо запуска нужной строки она печатает строку. Теперь моя проблема в том, что у меня есть несколько скриптов.ps1 (для примеров 1.ps1, 2.ps1 и т. Д.), И я хочу запустить их все в одном сеансе, чтобы все локальные переменные, созданные 1 Скрипт.ps1, скрипт 2.ps1 сможет использовать...

Теперь я попробовал так много способов. Сначала я попробовал с подпроцессом, но он всегда создает новый сеанс при каждом вводе команды (которая является путем к файлу.ps1). Затем я нашел этот проект на GitHub: https://gist.github.com/MarkBaggett/a7c10195b2626c78009bf73bcdb6db20 который действительно хорош и действительно работает, но все же кажется, что когда я запускаю команду./1.ps1, он все равно не сохраняет локальные переменные в сеансе (возможно, он открывает новую при запуске скрипта). Я попытался сделать также "Get-Content 1.ps1 | iex", но затем он вылетает, так как у меня есть функции, например:

function Invoke-Expression()
{
    param(
        [Parameter( `
            Mandatory=$True, `
            Valuefrompipeline = $True)]
        [String]$Command
    )
    Write-Host $Command
}

взяты из проекта PSDecode: https://github.com/R3MRUM/PSDecode/blob/master/PSDecode.psm1#L28

В любом случае, есть идеи о том, как я могу это сделать? У меня есть эти сценарии на рабочем столе, но я не знаю, как запустить их в одном сеансе, чтобы они использовали те же локальные переменные...

Хотя я сделал две вещи, но они действительно отстой: 1. Преобразуйте все сценарии в 1 сценарий и запустите его, но при следующем запуске я буду использовать эту программу, у меня может быть 100 или более сценариев, и я не хочу этого делать это. 2. Я могу сохранить локальные переменные из каждого скрипта и загрузить его в другой, но я хочу использовать его в худшем случае, но так и не получил.

Большое спасибо за помощь и извините за мою грамматику, мой английский не мой родной язык, как вы можете видеть:)

1 ответ

Может быть, вы ищете точечный источник:

Запускает сценарий в текущей области, так что любые функции, псевдонимы и переменные, которые создает сценарий, добавляются в текущую область. PowerShell

, C:\ Scripts\sample.ps1

Если это так, создайте ваши ps1-файлы и вызовите функции внутри них.

Надеюсь, это поможет.

Другие вопросы по тегам