text: from __future__ import print_function
  from builtins import str
  from builtins import object
  from lib.common import helpers
  
  class Module(object):
  
      def __init__(self, mainMenu, params=[]):
  
          self.info = {
              'Name': 'Get-SQLQuery',
              'Author': ['@_nullbind', '@0xbadjuju'],
              'Description': ('Executes a query on target SQL servers.'),
              'Background' : True,
              'OutputExtension' : None,
              
              'NeedsAdmin' : False,
              'OpsecSafe' : True,
              'Language' : 'powershell',
  			'MinPSVersion' : '2',
              'MinLanguageVersion' : '2',
              
              'Comments': [
                  'https://github.com/NetSPI/PowerUpSQL/blob/master/PowerUpSQL.ps1'
              ]
          }
  
          # any options needed by the module, settable during runtime
          self.options = {
              # format:
              #   value_name : {description, required, default_value}
              'Agent' : {
                  'Description'   :   'Agent to run module on.',
                  'Required'      :   True,
                  'Value'         :   ''
              },
              'Username' : {
                  'Description'   :   'SQL Server or domain account to authenticate with.',
                  'Required'      :   False,
                  'Value'         :   ''
              },
              'Password' : {
                  'Description'   :   'SQL Server or domain account password to authenticate with.',
                  'Required'      :   False,
                  'Value'         :   ''
              },
              'Instance' : {
                  'Description'   :   'SQL Server instance to connection to.',
                  'Required'      :   False,
                  'Value'         :   ''
              },
              'Query' : {
                  'Description'   :   'Query to be executed on the SQL Server.',
                  'Required'      :   True,
                  'Value'         :   ''
              }
          }
  
          self.mainMenu = mainMenu
          for param in params:
              # parameter format is [Name, Value]
              option, value = param
              if option in self.options:
                  self.options[option]['Value'] = value
  
      def generate(self, obfuscate=False, obfuscationCommand=""):
  
          username = self.options['Username']['Value']
          password = self.options['Password']['Value']
          instance = self.options['Instance']['Value']
          query = self.options['Query']['Value']
  
          # read in the common module source code
          moduleSource = self.mainMenu.installPath + "data/module_source/collection/Get-SQLQuery.ps1"
          script = ""
          if obfuscate:
              helpers.obfuscate_module(moduleSource=moduleSource, obfuscationCommand=obfuscationCommand)
              moduleSource = moduleSource.replace("module_source", "obfuscated_module_source")
          try:
              with open(moduleSource, 'r') as source:
                  script = source.read()
          except:
              print(helpers.color("[!] Could not read module source path at: " + str(moduleSource)))
              return ""
  
          scriptEnd = " Get-SQLQuery"
          if username != "":
              scriptEnd += " -Username "+username
          if password != "":
              scriptEnd += " -Password "+password
          if instance != "":
              scriptEnd += " -Instance "+instance
          scriptEnd += " -Query "+"\'"+query+"\'"
          if obfuscate:
              scriptEnd = helpers.obfuscate(self.mainMenu.installPath, psScript=scriptEnd, obfuscationCommand=obfuscationCommand)
          script += scriptEnd
          return script
  