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: Alles auswählen
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.'}
}