Lorsque vous manipulez des modèles de grande taille ou plusieurs modèles à la fois, il peut être fastidieux d'effectuer des tâches répétitives, telles que modifier des objets à l'aide de règles globales, importer ou générer des nouveaux formats ou encore vérifier des modèles. De telles opérations peuvent être automatisées à l'aide de scripts.
Vous pouvez lire et modifier n'importe quel objet PowerAMC en utilisant un langage de script tel que Java, VBScript, C#, ou de nombreux autres langages. Dans ce chapitre, nous nous focalisons principalement sur la rédaction de code VBScript destiné à être exécuté dans la boîte de dialogue Edition/Exécution d'un script, mais vous pouvez également appeler des compléments à partir des menus de PowerAMC (voir Lancement des scripts et de compléments depuis les menus) ou scripter l'application PowerAMC via OLE automation (voir OLE Automation et compléments).
' Ceci est un commentaire VBScript. 
Dim var ' Déclaration d'une variable locale
var = 1 ' Affectation d'une valeur pour un type simple
Set var = ActiveModel ' Affectation d'une valeur pour un objet. ActiveModel est une propriété globale PowerAMC
If not var is Nothing Then ' Condition sur un objet, testant pour savoir s'il est 'null'
   Dim objt ' Déclaration d'une autre variable locale
   For Each objt In ActiveModel.Children ' Boucle sur la collection d'objets enfant
      DescribeObject objt ' Appel de procédure avec objt comme paramètre (sans parenthèses). La procédure est définie ci-dessous.      
   Next
Else
   output "Il n'y a pas de modèle actif" ' Output est une procédure PowerAMC qui écrit du texte dans la fenêtre Résultats
End If
' Ceci est une procédure - un méthode qui ne renvoie pas de valeur
Sub DescribeObject(objt)
   Dim desc ' Déclaration de variable dans la procédure
   desc = ComputeObjectLabel(objt) ' Appel de fonction avec objt comme paramètre (avec parenthèses). La fonction est définie ci-dessous. 
                                   ' On récupère la valeur renvoyée par la fonction dans la variable desc
   output desc ' Affiche la description de l'objet dans le résultat
End Sub
' Ceci est une fonction - une méthode qui renvoie une valeur
Function ComputeObjectLabel(objt)
   Dim label ' Déclaration d'une variable locale pour stocker le libellé de l'objet
   label = "" ' Initialisation de la variable de libellé avec une valeur par défaut
   If objt is nothing then
      label = "Aucun objet"
   ElseIf objt.IsShortcut() then ' IsShortcut est une fonction PowerAMC disponible sur les objets
      label = objt.Name & " (shortcut)" ' Concaténation de deux chaînes
   Else
      On Error Goto 0 ' Désactive l'abandon d'exécution de script sur erreur
      label = objt.Name ' Assigne la propriété Nom de l'objet à la variable locale
      On Error Resume Next ' Réactive l'exécution de script en cas d'erreur
   End If
   ComputeObjectLabel = label ' La valeur est renvoyée en affectant une variable implicite avec le même nom que la fonction
End Function