PowerShell: Aus Fob-Datei Objektindex erzeugen
Verfasst: 30. Juli 2015 17:35
Mit dieser Funktion kann aus einer Fob-Datei (den Dateipfad der Fob dazu als Parameter übergeben) die Objektliste aus dem Header ausgelesen werden.
Diese Objekte werden mit der gebrauchsfertigen Bezeichnung als leere Dateien im Usertempverzeichnis im Ordner TEMPINDEX abgelegt (dieser Ordner wird am Start gelöscht), von wo aus diese für Objektexporte, Kompiliervorgänge usw. genutzt werden können. Verwendbar sind diese Funktionen der finsql.exe ab NAV 2013, nicht mehr unterstützte Objekttypen wie Forms und Dataports in der Fobdatei werden daher im Skript ignoriert.
Diese Objekte werden mit der gebrauchsfertigen Bezeichnung als leere Dateien im Usertempverzeichnis im Ordner TEMPINDEX abgelegt (dieser Ordner wird am Start gelöscht), von wo aus diese für Objektexporte, Kompiliervorgänge usw. genutzt werden können. Verwendbar sind diese Funktionen der finsql.exe ab NAV 2013, nicht mehr unterstützte Objekttypen wie Forms und Dataports in der Fobdatei werden daher im Skript ignoriert.
- Code:
function FobToIndexFiles
{
$FileExists = Test-Path $args
If ($FileExists -eq $False) {Throw "No $args file exists at this location."}
$FileExtension = [System.IO.Path]::GetExtension($args)
if ($FileExtension -eq '.fob')
{
$WorkingFolder = "$env:temp\TEMPINDEX\"
If (Test-Path $WorkingFolder) {Remove-Item $WorkingFolder -Recurse -Force}
$reader = [System.IO.File]::OpenText($args)
try {
for(;;) {
$line = $reader.ReadLine()
if ($line -eq $null) { break }
$FirstCharacter = $line.Substring(0,1)
IF ([byte][char]$FirstCharacter -eq 26) { break }
$ShortObjectType = $line.Substring(0,3).ToUpper()
Switch ($ShortObjectType)
{
"FOR" {break}
"DAT" {break}
}
if ($FirstCharacter -ne ' ')
{
Write-Host $line
$ObjectID = $line.Substring(10,10)
$ObjectID = $ObjectID.Trim()
$NewFileName = "$ShortObjectType" + "$ObjectID" +'.TXT'
$ExportPath = $WorkingFolder + $NewFileName
New-Item $ExportPath -ItemType file -force
}
}
}
finally {
$reader.Close()
}
}
else
{Throw 'Please use a Dynamics NAV object file with *.fob extension for this script.'}
}