Em vez de tentar modificar todos os seus links, você pode usar robocopy em um prompt de comando para copiar o link simbólico em vez de seu destino.
ROBOCOPY source\path destination\path /E /SL
Este comando copiará recursivamente todos os diretórios e arquivos da sua origem para o seu destino ( /E ) e, em vez de copiar o destino do seu link simbólico, copiará o próprio link ( /SL )
Você pode listar todos os seus links e alvos simbólicos com o powershell. Essa resposta no StackExchange mostra como.
dir 'Path\to\examine' -Recurse -Force | ?{$_.LinkType} | Select FullName,LinkType,Target
Você pode substituir os links existentes também usando o powershell.
New-Item -ItemType SymbolicLink -Path "Symbolic\Link\Path" -Target "New\Target\For\Link" -Force
Assim, um script para modificar todos os links em uma pasta seria assim:
$directory = 'Path\to\your\links'
$links = dir '$directory' -Force | ?{$_.LinkType}
foreach ($link in $links)
{
$target = $link.Target.Replace('C:\','G:\')
$path = $link.FullName
New-Item -ItemType SymbolicLink -Path "$path" -Target "$target" -Force
}
dir '$directory' -Force | ?{$_.LinkType} | Format-Table FullName,Target
Certifique-se de modificar o valor $directory e executá-lo em um prompt do powershell admin. Você pode adicionar o -Recurse flag ao comando dir para procurar em subpastas também.