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

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

Теперь я пробовал так много способов. Сначала я пробовал с подпроцессом, но он всегда создает новый сеанс каждый раз, когда я ввожу команду (это путь к файлу .ps1). Затем я нашел этот проект на GitHub: https://gist.github.com/MarkBaggett/26a7c20195 > Что действительно круто и работает, но все же кажется, что когда я запускаю команду ./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. Я могу сохранить локальные переменные из каждого сценария и загрузить их в другой, но я хочу использовать его в худшем случае, но до сих пор не дошел.

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


person oren ben yamin    schedule 13.06.2019    source источник


Ответы (1)


Возможно, вы ищете точечный поиск :

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

. c: \ scripts \ sample.ps1

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

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

person Moerwald    schedule 14.06.2019