Поиск местоположения определения глобальной переменной PowerShell - PullRequest
0 голосов
/ 15 октября 2019

Я чрезвычайно новичок в PowerShell (и программировании в целом - у меня нет реального опыта работы, хотя в прошлом я занимался легким написанием сценариев). Мне была предоставлена ​​возможность / цель продолжения проекта автоматизации, который был запущен бывшим сотрудником, и мне было дано некоторое время, чтобы просмотреть различные сценарии и части инфраструктуры, чтобы попытаться узнать, что они делают.

Сценарии, с которыми я работаю, запускаются в PowerShell и используют некоторые ранее созданные файлы инфраструктуры и файлы AutoHotKey для взаимодействия с пользовательским интерфейсом нашего программного обеспечения. В одном из тестовых сценариев у него есть глобальная переменная, которая вызывается, но она не определена в этом сценарии. Я просмотрел столько файлов фреймворка, сколько смог найти, и не могу найти, где эта глобальная переменная установлена ​​или определена.

Я пытался использовать команды Get-Variable в PowerShell, но я не уверен, что я использую его правильно. Я даже не уверен, что команда покажет мне, где определяется переменная, даже если бы я знал, как заставить ее работать.

Я также осмотрел ряд вопросов здесь, но, вероятно, из-зау меня нет опыта в программировании, я не понимаю, куда идти.

Это конкретный блок кода, и я ищу файл, который устанавливает $ global: DESKTOP_OUTPUT_FOLDER_NAME.

{
        $keys = @("{Home}", $global:DESKTOP_OUTPUT_FOLDER_NAME)
        Invoke-SSTIAInteractionPattern -Name "send-keys" -Parameter ($keys) -Delay 2
    },

Я могу вставить сюда больше кода, если мне нужно.

Он настроил это так, чтобы мы могли определить выходную папку на рабочем столе тестовой машины для сохранения сгенерированных файлов. Вместо этого он выплевывает все файлы на рабочий стол (тысячи файлов). Я не уверен, где он устанавливает выходное местоположение, которое представляется именно этой переменной, поэтому я надеюсь, что в PowerShell найдется способ найти это местоположение или файл.

1 Ответ

0 голосов
/ 15 октября 2019

С помощью Get-Variable вы можете получить переменные, которые уже указаны в контексте. И насколько я знаю, вы не можете увидеть, где была установлена ​​переменная. Поэтому я бы посоветовал вам взглянуть на все сценарии, чтобы найти позицию внутри кода, где объявлена ​​переменная. Вы можете использовать другие инструменты (например, «Total Commander 64 bit») для поиска внутри файлов или, возможно, этот фрагмент:

foreach ($File in (Get-ChildItem -Path ($FolderPath + '\*.ps1') -File -Recurse))
{
    foreach ($Line in (Get-Content -Path $File.FullName))
    {
        if ($Line -like '*DESKTOP_OUTPUT_FOLDER_NAME*')
        {
            Out-Host -InputObject $File.FullName
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...