Alternatively, simply run the data collection as a scheduled task.

Your scheduled job will update an "in progress" data area, and copy it to "last completed" area when it successfully finishes gathering the information.

When the user logs on, retrieve the "last completed" data, and update the local data collection scripts if needed.