Seems that there’s a bit of a gotcha when using powershell as an elevated user: any mapped network drives won’t be available, unless you explicitly connect them. I used to have the mapped drives I use hard-coded into my profile, but whenever the IT department move things around it breaks, and then I get error messages whenever I log in as an elevated user and have to remember what they mean.
So this is my workaround; a pair of scripts that lists all the mapped drives used by the regular user, then loads them up for the elevated user. The first is this script:
Get-PSDrive -PSProvider FileSystem | Select-Object Name, DisplayRoot | Where-Object {$_.DisplayRoot -ne $null}| Export-Clixml "~\appdata\local\mappedDrives.xml"
This uses powershell to get all the mapped network drives and export the list as an xml file. I schedule it to run whenever I log in.
The first script makes an XML file in the %Appdata% folder with a list of the drive paths and their letters, so all you have to do is import it and mount them whenever you elevate your session. To do this I have this in my profile.ps1:
# check to see if user is elevated If (([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")){ # import the data $mappedDrives = Import-Clixml "~\appdata\local\mappedDrives.xml" for ($i=0; $i -lt $mappedDrives.length; $i++){ $d = $mappedDrives[$i]; $n = $d.name + ":"; $r = $d.DisplayRoot; #mount each drive if (! (test-Path $n)){ net use "$n" "$r"; } } }