Powerd911 – Numéro #1 au Canada

Comment utiliser Microsoft PowerShell® afin d’automatiser des actions dans PowerAMC

Utilisation de Windows PowerShell® afin d’automatiser des actions dans PowerAMC

Étapes :

  • Lancer une fenêtre MS-DOS
  • Taper “Powershell” et appuyer sur la touche <Retour>
  • Au niveau du curseur tapez la commande suivante : $pd = new-object -com poweramc.application
    • La commande permet d’informer Windows Powershell® qu’il doit démarrer “PowerAMC” au titre d’un objet COM.
    • $pd est une référence sur le nouvel objet COM qui sera créé
  • Windows Powershell® lance l’exécution de PowerAMC
  • La commande suivante permet d’obtenir la liste des méthodes et des propriétés qui sont disponibles par l’entremise de PowerAMC
    • $pd | get-member

TypeName: System.__ComObject#{57c91ea5-68ef-4877-bb3e-757b12ecae55}

Liste des méthodes et des propriétés PowerAMC

NameMemberTypeDefinition
------------------------------------------------------------------------------------------------------------------------
BeginTransactionMethodvoid BeginTransaction ()
CancelTransactionMethodvoid CancelTransaction ()
ConvertToUTF16Methodvoid ConvertToUTF16 (string, string)
ConvertToUTF8Methodvoid ConvertToUTF8 (string, string)
CreateModelMethodBaseObject CreateModel (int, string, OpenModelFlags)
CreateModelFromTemplateMethodBaseObject CreateModelFromTemplate (string, OpenModelFlags)
CreateModelWithDialogMethodBaseObject CreateModelWithDialog (int, string, OpenModelFlags)
EndTransactionMethodvoid EndTransaction ()
EvaluateNamedPathMethodstring EvaluateNamedPath (string, bool, bool)
ExecuteCommandMethodstring ExecuteCommand (string, string, CommandExecutionMode)
FileImportMethodBaseObject FileImport (string, string, int, string, OpenModelFlags)
GetModuleForModelFileMethodBaseObject GetModuleForModelFile (string)
IsKindOfMethodbool IsKindOf (int, int)
MapToNamedPathMethodstring MapToNamedPath (string)
NewGUIDMethodstring NewGUID ()
newPointMethodAPoint newPoint (int, int)
NewPtListMethodPtList NewPtList ()
NewRectMethodARect NewRect (int, int, int, int)
OpenModelMethodBaseObject OpenModel (string, OpenModelFlags)
OutputMethodvoid Output (string)
ProfileSnapMethodvoid ProfileSnap (string, bool, int)
ProgressMethodBaseObject Progress (string, bool)
Rtf2AsciiMethodstring Rtf2Ascii (string)
Rtf2HtmlMethodstring Rtf2Html (string)
ShowHelpMethodvoid ShowHelp (int)
ActiveDiagramPropertyBaseObject ActiveDiagram () {get}
ActiveGlossaryPropertyBaseObject ActiveGlossary () {get}
ActiveModelPropertyBaseObject ActiveModel () {get}
ActivePackagePropertyBaseObject ActivePackage () {get}
ActiveSelectionPropertyObjectSet ActiveSelection () {get}
ActiveWorkspacePropertyBaseObject ActiveWorkspace () {get}
CheckPermissionsModePropertybool CheckPermissionsMode () {get} {set}
EclipseWorkspacePropertystring EclipseWorkspace () {get}
ExternalClientAdapterPropertyIDispatch ExternalClientAdapter () {get}
HomeDirectoryPropertystring HomeDirectory () {get}
InteractiveModePropertyInteractiveModeValue InteractiveMode () {get} {set}
LicenceParametersPropertystring LicenceParameters () {get}
LicenceStatusPropertystring LicenceStatus () {get}
LockedPropertybool Locked () {get} {set}
MainWindowHandlePropertyLONG_PTR MainWindowHandle () {get}
MetaModelPropertyBaseObject MetaModel () {get}
ModelsPropertyObjectSet Models () {get}
PicturesTransparentColorPropertyOLE_COLOR PicturesTransparentColor () {get} {set}
RegistryHomePropertystring RegistryHome () {get}
RepositoryConnectionPropertyBaseObject RepositoryConnection () {get}
ScriptInputArrayPropertyVariant ScriptInputArray () {get}
ScriptInputParametersPropertystring ScriptInputParameters () {get}
ScriptResultPropertystring ScriptResult () {get} {set}
ShowModePropertybool ShowMode () {get} {set}
UserDataDictionaryPropertyIStringDataDictionary UserDataDictionary () {get}
UserNamePropertystring UserName () {get}
ValidationModePropertybool ValidationMode () {get} {set}
VersionPropertystring Version () {get}
ViewerPropertybool Viewer () {get}

En prenant connaissance  des méthodes ci-dessus. On constate que l’on pourrait utiliser la méthode $pd.CreateModel afin de créer un modèle.

  1. Afin d’être en mesure de créer un modèle de données physique il faut indiquer à Windows PowerShell® que nous désirons ajouter les deux DLL suivants :
    • add-type -path ‘C:Program FilesSybasePowerAMC 16Interop.PdCommon.dll’
    • add-type -path ‘C:Program FilesSybasePowerAMC 16Interop.PdPDM.dll’
  2. Afin d’être en mesure afin de créer la table “CLIENT” ainsi que la colonne ID l’on peut, à titre d’exemple, utiliser les instructions suivantes :
 $model=$pd.CreateModel([PdPDM.PdPDM_Classes]::cls_Model,"|Diagram=PhysicalDiagram",0)
$model.name ="MY_PDM"
$diagram=$model.PhysicalDiagrams.Item(0)
$tbl=$model.CreateObject([PdPDM.PdPDM_Classes]::cls_Table,"" , -1, $false)
$tbl.Name="Client"
$tbl.Code="Client"
$tbl.Comment="Table Client"
$tbl.Description="Liste des clients de l'entreprise"

$coln=$tbl.Columns.CreateNew([PdPDM.PdPDM_Classes]::cls_Column)
$coln.Name="ID"
$coln.Code="ID"
$coln.DataType="integer";
$coln.Primary=$true
$diagram.AttachObject($tbl)

Rendez-vous dans PowerAMC et vous constaterez que la table “CLIENT” a été créé.

D’autre part vous pouvez sauvegarder le code ci-dessus dans un fichier avec l’extension “.ps1”. À titre d’exemple vous pouvez créer le fichier “CreateTable.ps1” et afin de lancer l’exécution et la création de la table vous taper “CreateTable.ps1” <Retour> au  niveau de la ligne de commande de Windows Powershell®

Laisser un commentaire