Search This Blog

Thursday, October 4, 2018

Notes View Exporter


Modify the variables at the top and let'r rip!




## Notes View Exporter in Powershell

Set-Location 'C:\Program Files (x86)\IBM\Notes' ## Notes Program Dir
$dominoServiceName = 'Appsrv001/MyCompany'
$dbName = 'names.nsf'
$viewName = 'Groups'


$session = $null; $session = New-Object -ComObject Lotus.NotesSession; $session.Initialize(); 'Notes version: '+$session.NotesVersion
$db = $null; $db = $session.GetDatabase($DominoServiceName, $dbName, 1);'DB Title: '+$db.Title
$view = $null; $view = $db.GetView($viewName);'Entry Count: '+$view.EntryCount

$oOut=@(); $count = 0;     $dtStart = (get-date)
if($view.EntryCount -gt 0){
    $doc = $view.getFirstDocument();
    $viewcolumns = $view | select -ExpandProperty Columns
    While ($doc -ne $null){
        if (($count/100) -eq [int]($count/100)){$dtCurr = (get-date); 'Count: '+$count+' of '+$view.EntryCount+': '+$dtCurr.Hour.ToString('#0')+':'+$dtCurr.Minute.ToString('#0')+':'+$dtCurr.Second.ToString('#0')+'.'+$dtCurr.Millisecond.ToString('###0')}                   
        $oItem = $null; $oItem = New-Object PSObject
        for ($i=0;$i-lt$viewcolumns.count;$i++){
            $val=$null;$val=if($viewcolumns[$i].Formula -gt ''){$viewcolumns[$i].Formula}else{$viewcolumns[$i].Itemname};
            $oItem = $oItem | Add-Member @{(''+$i+'. '+$viewcolumns[$i].title)=[string]''+($session.Evaluate($val,$doc))} -PassThru
        };
        $oOut += $oItem
        $doc=$view.GetNextDocument($doc); $count++
    }
}

$YYYYMMDDhhmmss = $dtStart.year.ToString('###0')+$dtStart.Month.ToString('#0')+$dtCurr.Day.ToString('#0')+$dtCurr.Hour.ToString('#0')+$dtCurr.Minute.ToString('#0')+$dtCurr.Second.ToString('#0')
$oOut | export-csv ('c:\data\notesviewexport'+$YYYYMMDDhhmmss+'.csv')
$oOut | Export-Clixml ('c:\data\notesviewexport'+$YYYYMMDDhhmmss+'.xml')