Husband, father, IT dude & blogger wrapped up into one good looking package.
The Curious Place Store
Change Drive Letters With PowerShell (and DiskPart)
January
26th,
2010
I wrote this PowerShell function to change drive letters with PowerShell and DiskPart. Other methods posted online utilize the Win32_Volume WMI class which is not available in Windows XP. Using DiskPart makes the function compatible with Windows XP/2003 as well as Vista/2008/7.
Also, note the method used to detect whether or not a drive exists. I use this method vs. Test-Path as Test-Path can return (what I consider) False-Falses. If you run Test-Path on a CD-ROM or other drive letter without any media, it will return False even though the drive letter itself is in use.
functionChangeDriveLetter($Current,$New){$CurrentDrive=New-ObjectSystem.IO.DriveInfo($Current)$NewDrive=New-ObjectSystem.IO.DriveInfo($New)if(($CurrentDrive.DriveType-ne"NoRootDirectory")-and($NewDrive.DriveType-eq"NoRootDirectory")){Write-Host("Changing drive letter from "+$Current+" to "+$New+"...")"select volume "+$Current+[char]13+[char]10+"assign letter "+$New|diskpart>$NullReturn$True}else{Write-Error("Can not change drive letter. Either "+$Current+":\ doesn't exist or "+$New+":\ already exists.")Return$False}}