PowerShell: Fob-Viewer mit Filter- und Sortiermöglichkeit
Verfasst: 2. August 2015 00:45
Mit diesem Skript wird der Dateiheader einer Fob-Datei ausgelesen und in einem Datagrid (Out-GridView) angezeigt. Die Spalten können dort frei arrangiert und alles gefiltert und sortiert werden.
Edit 24.10.17: Für manuellen Betrieb ist hier eine Variante mit "Datei öffnen"-Fenster.
Bitte beachten: Die Versionsliste für ein Objekt ist in einer Fob ggf. nur unvollständig vorhanden, die maximale Länge dort ist nur 67 Zeichen (statt 80 bzw. 248 ab NAV 2013 R2).
Deswegen habe ich das Feld abweichend nur Version genannt .
Filtern im Feld Name auf "Terms"
Ein Filter über alle Felder mit "Co". Es wäre schön, wenn der NAV-Windowsclient das auch optional könnte .
Kombinierte Mehrfachfilter mit einstellbaren Filterkriterien
Filterung auf Type "Re" (= Reports) auf diese dann nach Namen sortiert. Bei Sortierung nach ID beachten, dass alle Felder als Text behandelt werden.
Die Übergabe der Objektliste nach Excel ist über die Zwischenablage ebenfalls möglich.
Die Funktion wird zusammen mit dem Pfad zur Fobdatei aufgerufen.
Tags: Fobviewer
Edit 24.10.17: Für manuellen Betrieb ist hier eine Variante mit "Datei öffnen"-Fenster.
Bitte beachten: Die Versionsliste für ein Objekt ist in einer Fob ggf. nur unvollständig vorhanden, die maximale Länge dort ist nur 67 Zeichen (statt 80 bzw. 248 ab NAV 2013 R2).
Deswegen habe ich das Feld abweichend nur Version genannt .
Filtern im Feld Name auf "Terms"
Ein Filter über alle Felder mit "Co". Es wäre schön, wenn der NAV-Windowsclient das auch optional könnte .
Kombinierte Mehrfachfilter mit einstellbaren Filterkriterien
Filterung auf Type "Re" (= Reports) auf diese dann nach Namen sortiert. Bei Sortierung nach ID beachten, dass alle Felder als Text behandelt werden.
Die Übergabe der Objektliste nach Excel ist über die Zwischenablage ebenfalls möglich.
Die Funktion wird zusammen mit dem Pfad zur Fobdatei aufgerufen.
- Code:
function FobObjectsGridView
{
$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')
{
$DataArray = New-Object System.Collections.Generic.List[object]
$reader = [System.IO.File]::OpenText($args)
Write-host "Reading fob header, please wait..."
try {
for(;;) {
$line = $reader.ReadLine()
if ($line -eq $null) { break }
$FirstCharacter = $line.Substring(0,1)
IF ([byte][char]$FirstCharacter -eq 26) { break }
if ($FirstCharacter -ne ' ')
{
Write-host $line
$ObjectType = $line.Substring(0,9).Trim()
$ObjectID = $line.Substring(10,10).Trim()
$ObjectName = $line.Substring(21,30)
$ObjectDate = $line.Substring(54,10).Trim()
$ObjectTime = $line.Substring(70,8).Trim()
}
else
{
$ObjectSize = $line.Substring(10,10)
$ObjectVersion = $line.Substring(21,57)
$Obj = New-Object Psobject -Property @{
Type= $ObjectType
ID = $ObjectID
Name = $ObjectName
Date = $ObjectDate
Time = $ObjectTime
Size = $ObjectSize
Version = $ObjectVersion
}
$DataArray.add($Obj)
}
}
}
finally {
$reader.Close()
$DataArray | Out-GridView -title "Fobviewer $args"
}
}
else
{Throw 'Please use a Dynamics NAV object file with *.fob extension for this script.'}
}
Tags: Fobviewer