Ist auf einem Client mehr als ein PVS/AIS Installiert welche gleichzeitig laufen und beide eine Anbindung zu labGate benötigen, so ist hierfür der gemeinsame Order OUT für die Übergabe vom AIS/PVS zu labGate zu Verwenden. Für den Rückschrieb braucht jedes AIS/PVS ein eigenen IN Ordner


Die in der Anleitung vorgestellten Scripte im Ordner SCRIPT können hier heruntergeladen werden

Diese Anleitung wird ergänzend zu der eigentlichen AIS/PVS Anbindung ausgeführt


Neben den IN Ordner müssen zwei weitere Ordner Erstellt werden, z.B. C:\AIS\IN1 und C:\AIS\IN2 (Bei Bedarf kann die Anzahl beliebig erweitert werden, die Scripte sind dann entsprechend zu erweitern)

Des weiteren wird ein SCRIPT Ordner benötigt


Variante 1 - Batch Datei zum umsortieren mit externen Trigger

im SCRIPT Ordner wird eine BAT Datei abgelegt mit folgenden Inhalt

Im Script wird von den Standard Ordner C:\AIS\IN für die Überwachung sowie C:\AIS\IN1 und C:\AIS\IN2 ausgegangen. Ggf. müssen diese bei Abweichungen angepasst werden.

Das Script sucht nach der Einsenderkennung und sortiert entsprechend um. Im Beispiel ist diese 001 (Feldkennung 8312) Diese ist in jedem Fall anzupassen (Zeile 7).

2IN
@echo off

SETLOCAL EnableDelayedExpansion

FOR /F "delims=" %%A IN ('DIR /B /S C:\AIS\IN\*.*') DO (
  SET filedata=%%A
  FOR /F "tokens=*" %%B IN ('FINDSTR /I "8312001" !filedata!') DO (
    MOVE "%%A" C:\AIS\IN1\
  )
  IF NOT EXIST C:\AIS\IN1\!filedata! (
    MOVE "%%A" C:\AIS\IN2\
  )
)

ENDLOCAL

Dieses Script muss vor dem Import im AIS/PVS ausgeführt werden, entweder durch dieses gestartet oder manuell zum Beispiel über eine Desktop Verknüpfung


Variante 2 - PowerShell Datei zum umsortieren kein externer Trigger notwendig, ggf. werden dazu erweiterte Benutzerrechte und Ausnahmen im Virenscanner benötigt.

im SCRIPT Ordner eine PowerShell Datei ablegen mit folgendem Inhalt

Im Script wird von den Standard Ordner C:\AIS\IN für die Überwachung sowie C:\AIS\IN1 und C:\AIS\IN2 ausgegangen. Ggf. müssen diese bei Abweichungen angepasst werden.

Das Script sucht nach der Einsenderkennung und sortiert entsprechend um. Im Beispiel ist diese 001 (Feldkennung 8312) Diese ist in jedem Fall anzupassen (Zeile 58).

2IN
# specify the path to the folder you want to monitor:
$Path = "C:\AIS\IN"
 
# specify which files you want to monitor
$FileFilter = '*' 
 
# specify whether you want to monitor subfolders as well:
$IncludeSubfolders = $true
 
# specify the file or folder properties you want to monitor:
$AttributeFilter = [IO.NotifyFilters]::FileName, [IO.NotifyFilters]::LastWrite
 
 
 
try
{
  $watcher = New-Object -TypeName System.IO.FileSystemWatcher -Property @{
    Path = $Path
    Filter = $FileFilter
    IncludeSubdirectories = $IncludeSubfolders
    NotifyFilter = $AttributeFilter
  }
 
 
  # define the code that should execute when a change occurs:
  $action = {
    # the code is receiving this to work with:
     
    # change type information:
    $details = $event.SourceEventArgs
    $Name = $details.Name
    $FullPath = $details.FullPath
    $OldFullPath = $details.OldFullPath
    $OldName = $details.OldName
     
    # type of change:
    $ChangeType = $details.ChangeType
     
    # when the change occured:
    $Timestamp = $event.TimeGenerated
     
    # save information to a global variable for testing purposes
    # so you can examine it later
    # MAKE SURE YOU REMOVE THIS IN PRODUCTION!
    $global:all = $details
     
    # now you can define some action to take based on the
    # details about the change event:
     
    # let's compose a message:
    $text = "{0} was {1} at {2}" -f $FullPath, $ChangeType, $Timestamp
    Write-Host ""
    Write-Host $text -ForegroundColor DarkYellow
    Start-Sleep -Seconds 3
    
    # PVS1
    $exportfolder1="C:\AIS\IN1"
    $IdPvs1="8312001"
    
    # PVS2
    $exportfolder2="C:\AIS\IN2"
 
    # dispatch files to target folders:
        if(Select-String -Path $FullPath -Pattern $IdPvs1 -Quiet -SimpleMatch )
            {
                Move-Item -Path $FullPath -Destination $exportfolder1 -Force
             
            }
         else
            {
                  Move-Item -Path $FullPath -Destination $exportfolder2 -Force
            }  
  }
 
  # subscribe your event handler to all event types that are
  # important to you. Do this as a scriptblock so all returned
  # event handlers can be easily stored in $handlers:
  $handlers = . {
    Register-ObjectEvent -InputObject $watcher -EventName Created  -Action $action
    Register-ObjectEvent -InputObject $watcher -EventName Changed  -Action $action
  }
 
  # monitoring starts now:
  $watcher.EnableRaisingEvents = $true
 
  Write-Host "Watching for changes to $Path"
 
  # since the FileSystemWatcher is no longer blocking PowerShell
  # we need a way to pause PowerShell while being responsive to
  # incoming events. Use an endless loop to keep PowerShell busy:
  do
  {
    # Wait-Event waits for a second and stays responsive to events
    # Start-Sleep in contrast would NOT work and ignore incoming events
    Start-Sleep -Seconds 1
 
    # write a dot to indicate we are still monitoring:
    Write-Host "." -NoNewline
         
  } while ($true)
}
finally
{
  # this gets executed when user presses CTRL+C:
   
  # stop monitoring
  $watcher.EnableRaisingEvents = $false
   
  # remove the event handlers
  $handlers | ForEach-Object {
    Unregister-Event -SourceIdentifier $_.Name
  }
   
  # event handlers are technically implemented as a special kind
  # of background job, so remove the jobs now:
  $handlers | Remove-Job
   
  # properly dispose the FileSystemWatcher:
  $watcher.Dispose()
   
  Write-Warning "Event Handler disabled, monitoring ends."
}

Dieses PowerShell Script startet einen eigenen Event-Handler welche auf neue Dateien im IN Ordner reagiert. Das Script sollte bei Rechner Start mit gestartet werden, z.B. durch eine Verknüpfung im Autostart mit folgendem Ziel:
powershell.exe -windowstyle hidden -file C:\AIS\SCRIPT\2IN.ps1


Die PVS Anbindung ist wie gewohnt vorzunehmen. Lediglich beim Rückschrieb muss statt des IN Ordners IN1 oder IN2 (,IN3,..INn) konfiguriert werden.