Messaging and beyond!

Tales of an MS Exchange PFE

Scripting: Adding PST files to an outlook profile automatically

Scripting: Adding PST files to an outlook profile automatically

  • Comments 13
  • Likes

This script will allow you to add all PSTs in a txt file (full path).

On error resume next
    Const ForReading = 1 
    Dim arrFileLines() 
    Dim objNetwork,ObjFSO,objFile,objNet,objOutlook
    
    i=0
    
    Set objnet = CreateObject("wscript.network")
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.OpenTextFile("c:\users\marcdek\temp\"& objNet.Username & "-PSTOUTPUT.txt", ForReading) 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objOutlook = CreateObject("Outlook.Application") 
 
    Do Until objFile.AtEndOfStream 
        Redim Preserve arrFileLines(i) 
        arrFileLines(i) = objFile.ReadLine 
                i = i + 1 
    Loop 
    
    objFile.Close
    
    For Each strPath in arrFileLines 
         objOutlook.Session.Addstore strPath
    Next  

And if you want to add a selection to only add local PST files you use the following:

On error resume next
    Const ForReading = 1 
    Dim arrFileLines() 
    Dim objNetwork,ObjFSO,objFile,objNet,objOutlook
    
    i=0
    
    Set objnet = CreateObject("wscript.network")
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objFile = objFSO.OpenTextFile("c:\users\marcdek\temp\"& objNet.Username & "-PSTOUTPUT.txt", ForReading) 
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objOutlook = CreateObject("Outlook.Application") 
 
    Do Until objFile.AtEndOfStream 
        Redim Preserve arrFileLines(i) 
        arrFileLines(i) = objFile.ReadLine 
                i = i + 1 
    Loop 
    
    objFile.Close
    
    For Each strPath in arrFileLines 
         Select Case True
            Case InStr(strPath,":\") > 0  
                objOutlook.Session.Addstore strPath
            Case InStr(strPath,"\\") > 0  
            End Select
    Next  
Comments
  • What code would be needed in order for the script to scan a particular file on the local machine to auto populate the data in the -PSTOUTPUT.txt so I could run the code on a rebuilt machine and auto add all the .pst files on the machine to the usser's outlook profile? Some of my clients have hundreds of pst files and adding them individually is a big time waster.

  • Hi DraakusM,

    You could use the following script to populate that list:

    blogs.technet.com/.../scripting-listing-pst-files-in-an-outlook-profile.aspx

  • Exactly what I was looking for (with over 100 PSTs... don't ask. :) )

    One caveat for people... if one or more of them is corrupt, it can take a LONG time for it to come back from the script.  You might want to break up your list into 10 file chunks (or less) and just keep repopulating the file list.

    Thank you!

  • Where i put the txt file?

  • If my supposition is good... for exemple the username of the user is
    Bblaze the path Will be:
    C:\users\marcdek\temp\bblaze-PSTOUTPUT.txt

  • C:\users\bblaze\temp\bblaze-PSTOUTPUT.txt

  • This doesn't seem to work at all. Has this been tested with outlook 2010 on Win 7?

  • Works great on Outlook 2013! Thanks! I'm looking for the remove command so I have one script to add and one to remove.

  • I've used this script with limited success.

    I have a list of 87 PST files that I need to create - long story...

    Anyway, this script only seems to create between 70-75 PST file and then it doesn't create any more. Even if I break it down into chunks of say 40 & 47, it will create the first 40 ok and when I run the modified script to create the next batch of 47 it will only create approximately the first 30-35 and then it just ends with no error on screen.

    Is there a maximum amount of text that can be processed by the script?

    I've tried another similar script that has all the PST file names to create inside an array and I get a similar number (maybe up to 75 vs 70 with this exact script reading from a separate txt file. Again, if I break it down into similar chunks it's still the same and will only create 70-75 total and then stop executing.

    I'm going to try to shorten the path and filenames from the current

    C:\Users\USERID\AppData\Local\Microsoft\Outlook\MYPSTABC.PST

    to something like

    C:\TEST\\MYPSTABC.PST

    and see if that makes any difference, but it's still going to cause me some problems in what I'm trying to achieve if I can get it working.

    --

    Some PST files that I'm creating have spaces in their names, but that's not the issue and those get created OK.

  • Has this been tested with outlook 2010 on Win 8?

  • In my case I've only been able to test with Outlook 2010 (32 bit) on Win7 (64 bit)

  • I shortened the path to create the PST files in C:\TESTFOLDER\ in the hope that it would make some difference, but it didn't really make any as it only created the first 61 files in the list and then stopped.
    I then tried splitting the script into 2 batches and started from scratch again. When starting from 62 to 87 it created the 26 files perfectly, and then when I ran the 1-61 batch it only created the first 41 files to give me a total of 67 files instead of the 87 total that I have...

    There's nothing wrong in the file names because if I run them separately everything gets created - it just seems to be a problem with the total count of files it can create & open in Outlook via script.

  • I'm baffled...

    I just shortened my file list again to be as follows
    C:\TESTFOLDER\file1.txt
    C:\TESTFOLDER\file2.txt
    C:\TESTFOLDER\file3.txt
    right down to C:\TESTFOLDER\file87.txt

    --

    The script will create as far as C:\TESTFOLDER\file68.txt and then it just looks like it completes as normal with no error and if I run it again it won't create any more...

    If I split the file into chunks it will still only create 68 files total...

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment