Ultimate folder redirection for Onedrive, Teams and Sharepoint

In the post-Onedrivemapper era where we have Files On Demand, there is still room for improvement in client side configuration of Onedrive for Business. Onedrive Known Folders isn’t up to par yet, doesn’t support any customization and there are situations where I want to be able to redirect local folders to other places than Onedrive like Teams or Sharepoint.

Therefore I present to you “Invoke-O4BAutoMount“; the ultimate Onedrive/Sharepoint/Teams sync and redirect solution in modern workplace scenario’s, no WebDav, just the NSG Onedrive Client and native Intune Management Extension:

  • Single PS script
  • User does NOT have to be an Admin
  • Per special folder configuration of redirection settings
  • Extra (symlink) redirection for ANY folder (specific appdata subfolders anyone?)
  • Automatically runs at logon and/or at specified intervals
  • Can be unassigned (removing a user from the target group in Intune stops the script from running)
  • Can redirect to subfolders, even nested
  • Handles automatic creation of any folders
  • Supports variables in paths
  • Registers Environment Variables for the new locations if you configure it to
  • Can hide target folders (appdata likes to hide)
  • Multi-user support (Windows Virtual Desktop / Server 2019)

How to use in 8 easy steps:

1. Configure the tenant ID and how often you want to script to run:

2. Then get the ODOpen URL of any libraries you wish to sync:

Use Chrome or Edge, do not use Internet Explorer!

3. paste the URL into the script in the syncUrl section and configure the site and list titles:

User experience: The site and list title will show in explorer like “siteTitle – listTitle”

4. if you only need Onedrive and don’t want to sync any sharepoint/teams libraries, configure like this:

5. Pick which folders you want to redirect, and where you want to redirect them to:

This example redirects the My Documents and Desktop folders to the user’s Onedrive, and the Pictures folder to a subfolder in a teamsite called “AutoMapTestTeam”, the subfolder is automatically created using the user’s email address.

6. Configure any special folders that normally cannot be redirected

This example will redirect the local Skype folderin APPDATA to a user’s Onedrive, thus roaming Skype contacts and profile information to Onedrive

7. Upload to Intune as a PowerShell script:

Make sure you set it to 64 bit AND to run as system instead of the user’s logged on credentials

8. Deploy to your users (you can also deploy to machines, but then you need to set autoRerunMinutes to > 0 and it might not run at logon)

Further recommendations

This script assumes you’ve already Configured Onedrive to automatically log the user in and I strongly recommend to run Onedrive in Per Machine Mode for faster config.

I haven’t extensively tested running this script when multiple users are active on a device at the same time (ie: citrix, wvd, remoteapp); I’d love to hear about your results!

Thanks and inspiration

Michael Mardahl for giving me the ODOPEN and IME hack examples

Aaron Parker for writing on Folder Redirection with PowerShell

Justin Murray for showing me how to impersonate another user

Per Larsen for writing on silent config / admx stuff regarding Onedrive

Olivier Kieselbach for his three deep dives on the Intune Management Extension

Notice

As always, this is a free script and no guarantees are given, use at your own risk.

Troubleshooting

Log locations:

c:\\users\\appdata\\local\\temp\\Invoke-O4BAutoMount.log for the user portion.

C:\\Windows\\Temp\\Invoke-O4BAutoMount.log for the SYSTEM portion

If the script isn’t running at all (no log file), check the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IntuneManagementExtension\Policies subkeys for error info from the script. Make sure the config section of the script is correct or it won’t run.

If it isn’t as running as frequently as you like, you may be getting throttled. Don’t run more frequently than hourly (per account).

Also check Olivier’s deep dives for general troubleshooting of Powershell scripts with Intune

18
Leave a Reply

avatar
7 Comment threads
11 Thread replies
6 Followers
 
Most reacted comment
Hottest comment thread
6 Comment authors
JosMartin JoergensenMichaelBrianTesty Recent comment authors

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
newest oldest most voted
Notify of
Brian
Guest

Hi Jos,

A quick question. If I have users in multiple departments, can the script be used in a cumulative fashion?

IE, if I were to have a base all users script, but I had some users in finance, and some in HR, and a couple across both those functions, could I deploy the script to their security groups and have them syncing all of the libraries they need for their job, or would whichever script ran last over-write the previous scripts?

Martin Joergensen
Guest

If i wanted to map multiply folders, it only maps on.

$listOfLibrariesToAutoMount = @(
@{“siteTitle” = “Alle”;”listTitle”=””;”syncUrl” = “tenant…”}
@{“siteTitle” = “Oekonomi”;”listTitle”=””;”syncUrl” = “tenant…”}
@{“siteTitle” = “Personale”;”listTitle”=””;”syncUrl” = “tenant…”}
)
am i doing something wrong?

Also, i get notifiet all the time that the foldes is allready in sync.
it pops up with 2 min between

Michael
Guest
Michael

Hi Jos,

Create artikel! It is definitely what i was looking for!

If you declare a space within the siteTitle of $listOfLibrariesToAutoMount it gets recplace for a + sign by [System.Web.HttpUtility]::UrlEncode.

If you use [uri]::EscapeDataString it will change to %20 so people see a normall space wihtin explorer.

Is there a particular reason why you use [System.Web.HttpUtility]::UrlEncode?

But again create script! Will proberly use it alot

Sasaus
Guest
Sasaus

Thanks for this. Is it possible to have the name be the same as when you hit the Sync button?

For example a document library named Apps in a SharePoint site named Files gets the name Files – Apps when synced manually through the button.

With your script it gets the name Apps – Documents.

I use applications that get certain data from synced SharePoint sites, but I cannot set multiple possible paths to the folder location.

Testy
Guest
Testy

How would this work on a shared computer?

trackback

[…] As you may have noticed, I’m using an environment variable here called ${DOCUMENTS}. This variable is a google-specific variable, you can’t use environment variables here like %APPDATA%, if you want to roam to a different location, use my Ultimate redirection script […]

trackback

[…] ARTICLE SUPERCEDED BY Ultimate folder redirection for Onedrive, Teams and Sharepoint […]