Créer un package de module d’extension ACC

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 3 minutes de lecture
  • Créez un package de module d’extension Agent Client Collector (ACC) qui inclut le script PowerShell définissant l’action de rattrapage, un script Ruby et une liste d’autorisation pour permettre l’exécution de l’action de rattrapage sur un appareil de point de terminaison.

    Avant de commencer

    Rôle requis : admin

    Procédure

    1. Créez un dossier racine pour le module d’extension ACC sur votre ordinateur local et nommez-le.
      Par exemple, acc-dex-custom.
    2. Dans le dossier racine, créez deux sous-dossiers nommés liste d’autorisation et corbeille.
    3. Créez un script PowerShell à l’aide de PowerShell ou de commandes d’invite de commande pour définir l’action de rattrapage à exécuter sur un appareil de point de terminaison.
      1. Dans le dossier de la corbeille , créez un fichier .ps1 et nommez-le avec l’extension .ps1 .
        Par exemple, CustomScript.ps1
      2. Ouvrez le fichier .ps1 et ajoutez les commandes.
        Par exemple, l’exemple de fichier .ps1 suivant définit une action de rattrapage personnalisée à l’aide de commandes permettant d’arrêter et de redémarrer le processus W32Time, de mettre en pause et de redémarrer le service Spooler sur un appareil.
        sc.exe stop w32time
        
        $process = Get-Process -Name w32time -ErrorAction SilentlyContinue
        if ($process) {
            taskkill /f /t /im w32tm.exe
        }
        
        Start-Sleep -Seconds 5
        
        sc.exe start w32time
        Start-Process "C:\Windows\System32\w32tm.exe"
        
        Start-Sleep -Seconds 5
        
        sc.exe stop spooler
        sc.exe start spooler
        Remarque :
        Vous pouvez configurer le script PowerShell pour accepter les paramètres d’entrée définis dans l’instance pendant l’exécution ServiceNow .
      3. Enregistrez le fichier.
    4. Créez un script Ruby pour appeler le fichier .ps1 à partir de l’instance ServiceNow .
      1. Dans le dossier de la corbeille , créez un fichier Ruby et nommez-le avec l’extension .rb .
      2. Ouvrez le fichier .rb et ajoutez votre code à l’aide de Ruby brut ou de n’importe quel framework Ruby.
        Le script Ruby doit inclure la logique pour :
        • Appelez le script .ps1 que vous avez créé en vous assurant d’entrer le chemin d’accès correct au fichier.
        • Validez si la commande est exécutée avec succès.
        • Créez une sortie JSON qui inclut l’état de l’exécution, la sortie et les erreurs, le cas échéant.
      3. Exécutez la commande et examinez la sortie pour confirmer si le fichier .ps1 est appelé avec succès ou s’il y a des erreurs.
        Par exemple, l’exemple de fichier .rb suivant exécute un fichier .ps1 (CustomScript.ps1) à l’aide de la commande exécuter du module d’extension acc-f-commons, valide si la commande s’exécute correctement et renvoie le résultat JSON.
        require "logger"
        require_relative "../../../acc-f-commons/bin/command_runner.rb"
        require "json"
        
        class CustomScript
          def initialize()
            @logger = Logger.new(STDOUT)
            @cmd_runner = CommandRunner.new
            @logger.level = "FATAL"
          end
        
          def execute_custom_script()
            status = "failure"
            msg = nil
            data = {}
        
            parent_cache_directory = File.expand_path("../..", File.dirname(__FILE__)).gsub(" ", "` ")
            query = "powershell -ExecutionPolicy Bypass " + parent_cache_directory + "/acc-dex-custom/bin/ps/customScript.ps1"
        
            output, error = @cmd_runner.runCmd(query, @logger, "mode con:cols=32766 lines=1 & chcp 65001 > nul & ", true, false)
        
            if !error && !output.empty?
              status = "success"
              msg = "Successfully ran script"
              data = output
            else
              msg = "Failed - #{error}"
            end
        
            result = {
              "status" => status,
              "type" => "device",
              "metric_type" => "remedial_action",
              "keys" => "custom_script",
              "data" => data,
              "message" => msg
            }
        
            puts JSON.generate(result)
          end
        end
        
        custom_script = CustomScript.new
        custom_script.execute_custom_script()
        Remarque :

        Si le script PowerShell est configuré pour accepter les paramètres d’entrée de l’instance ServiceNow , le script Ruby transmet ces paramètres au script PowerShell pendant l’exécution.

    5. Créez un fichier de liste d’autorisation et spécifiez le script Ruby autorisé pour l’exécution sur les appareils de point de terminaison.
      1. Dans le sous-dossier de la liste d’autorisation , créez un fichier de liste JSON d’autorisation.
        Par exemple, check-allowlist.json.
      2. Définissez toutes les conditions, telles que les arguments, à accepter dans le script .rb ou créez une logique personnalisée.
      3. Enregistrez le fichier.
    6. Générez un fichier tar.gz pour votre dossier de module d’extension ACC à l’aide de n’importe quel utilitaire.
      Remarque :
      Le nom du fichier tar.gz doit correspondre au nom du dossier racine du module d’extension. Par exemple, acc-dex-custom.tar.gz