Tobit david® API (DvAPI) mit Powershell

Kürzlich kam in unserem Forum die Frage nach der Verwendung der David API mit der Powershell auf.

Ich hatte seit längerem nicht mehr mit der DvAPI gearbeitet und bisher auch noch nie in Verbindung mit der Powershell. Irgendwie bin ich nie auf den Gedanken gekommen, aber als die Frage aufkam, klang das ziemlich interessant.

Also habe ich mich dran gesetzt, ein bisschen probiert und schneller als gedacht ein funktionierendes Beispiel realisiert.

Das kommentierte Codebeispiel finden Sie am Ende dieses Artikels und in unserem Github Repository.

Aufpassen muss man bzgl. der Verwendung der richtigen Bit-Version der Programme. Hat man bereits den David Client in der 64 Bit Version installiert, kann man die „ganz normale“ Powershell (64 Bit) nutzen. Wenn man noch den 32 Bit Client verwendet, muss man die Powershell x86 verwenden, da man sonst einen Fehler beim Zugriff auf die API bekommt.

Wie so oft kam es einige Tage später auch zur praktischen Anwendung eines DvAPI Powershell Skriptes, bei dem ich diese Basis genutzt und mal eben schnell einen Adressexporter programmiert habe. Dazu mehr in einem weiteren Artikel (sneak peak: Es geht um Tobit david® + STARFACE + Estos MetaDirectory 5).

# David Ordner-Pfadvariable
$dvArchivePath = "\\servername\david\archive\user\10004000\in";

# Zeitspanne im Format m-d-Y, wobei Monat und Tage ohne führende Nullen anzugeben sind
# Im Beispiel: 1.4.2016 - 28.2.2023
# ---------------------------------------
# WICHTIG: Die Angabe der Zeitspanne muss zwingend mit doppelten Anführungszeichen erfolgen,
# sonst funktioniert es nicht; daher hier im PS Beispiel einfache Anführungszeichen zur Definition
# des Strings und darin nochmal doppelte Anführungszeichen für die Angabe des DvItemFilterBits Strings
# ---------------------------------------
$dvTimeRange = '"4-1-2016 00:00:00 - 2-28-2023 0:00:00"';

# Ausgabe der Pfadvariable zur Visualisierung bei der Skriptausführung
Write-Host "Der verwendete Pfad lautet: $dvArchivePath.";
Read-Host "Fortfahren mit Enter";

# API initialisieren
$dvApi = new-object -comobject DVOBJAPILib.DvISEApi;

# Account Objekt erzeugen
$oAcc = $dvApi.Logon('','','','','','AUTH');

# Archive Objekt erzeugen (gewünschten Pfad eintragen)
$oArchive = $oAcc.ArchiveFromID($dvArchivePath);

# Alle Einträge des Ordners als MessageItem2 einlesen
$entries = $oArchive.GetArchiveEntries("Default");

# Schleife über alle Eintrag und Ausgabe des Betreffs mit DocumentType
Write-Host "--- Ausgabe des Betreffs und DokumentTyp aller MessageItem-Typen (DvItemFilterBits Default) ---";
Write-Host;

foreach ($item in $entries) { 
	$output = $item.Fields('Subject').Value + " (Type: " + $item.Fields('DocumentType').Value + ")";
	Write-Host $output;
}

Write-Host;

# Nur Faxe des Ordners als MessageItem2 einlesen ()
# DvItemFilterBits = DvFilterOnlyFax | String = OnlyFax
# Da die DvFilterBit-Typen in Powershell nicht funktionieren, wird die Stringvariante verwendet
$entries = $oArchive.GetArchiveEntries('OnlyFax');

# Schleife über alle eingelesenen Einträge und Ausgabe des Betreffs mit DocumentType
Write-Host "--- Ausgabe des Betreffs und DokumentTyp von Fax-Typen (DvItemFilterBits OnlyFax) ---";
Write-Host;

foreach ($item in $entries) { 
	$output = $item.Fields('Subject').Value + " (Type: " + $item.Fields('DocumentType').Value + ")";
	Write-Host $output;
}

Write-Host;

# Alle Einträge des Ordners innerhalb einer Zeitspanne als MessageItem2 einlesen
$entries = $oArchive.GetArchiveEntries('StatusTime=' + $dvTimeRange);

# Schleife über alle Eintrag und Ausgabe des Betreffs mit DocumentType
Write-Host "--- Ausgabe des Betreffs und DokumentTyp aller MessageItem-Typen innerhalb der Zeitspanne $dvTimeRange ---";
Write-Host;

foreach ($item in $entries) { 
	$output = $item.Fields('Subject').Value + " (Type: " + $item.Fields('DocumentType').Value + ")";
	Write-Host $output;
}

Write-Host;

Code-Sprache: PowerShell (powershell)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert