У меня есть сумасшедшие сетевые администраторы, которые всегда меняют UNC-путь к моему рабочему каталогу.  Используя пример домена, чтобы проиллюстрировать изменения, клянусь, я видел по крайней мере эти четыре разных UNC в одном каталоге и файлах за последние 6 месяцев:
\\contoso\Projects\rhinoexhibit\
\\contoso\Design\Projects\rhinoexhibit\
\\contoso.com\Design\Projects\rhinoexhibit\
\\city.contoso.com\Departments\Design\Projects\rhinoexhibit\
\\city.contoso.com\Departments\AlphaDesignGroup\Projects\rhinoexhibit\
Я тоже пользуюсь.Файлы LNK, которые оба ссылаются непосредственно на файл в поле «Цель»:
\\contoso\Projects\rhinoexhibit\rhinospecifications.pdf
а также .LNK-файлы, которые ссылаются на приложение для открытия файла с определенными параметрами (здесь я использую Foxit Reader для открытия PDF-файла на определенной странице) в поле «Цель»:
"C:\Program Files (x86)\FOXIT READER\Foxit Reader.exe" /A page=37 "\\contoso\Projects\rhinoexhibit\rhinospecifications.pdf"
Эти каталоги находятся на общих ресурсах корпоративной сети, и у меня нет доступа для изменения UNC на общие ресурсы или использования какого-либо перенаправления, поэтому изменение ответа Терренса сработало для меня лучше всего.  Поскольку я был новичком в PowerShell, мне пришлось выяснить, как его использовать, поэтому я дам пошаговые инструкции о том, как использовать мою модификацию его превосходного сценария:
- Используя Блокнот, вставьте приведенный ниже код в новый текстовый документ.  Сохраните документ как Edit-LNK-files.ps1 в каталоге, который легко найти и быстро набрать (например, C:\MyPowerShells)
- В Блокноте измените параметр $oldString(строка 4), чтобы он содержал строку, которую вы хотите найти, и параметр$newString(строка 7), чтобы он содержал строку, которую вы хотите заменить.  Отредактируйте параметр$searchPath(строка 10), чтобы указать каталог, в котором вы находитесь.LNK файлы для редактирования находятся постоянно.
Кроме того, вы можете указать эти переменные позже по своему усмотрению, запустив сценарий из командной строки PowerShell и отредактировав параметры (например,& "C:\MyPowerShells\Edit-LNK-files.ps1" -oldString E:\ -newString D:\ -searchPath "C:\My LNKs\"
- Запустите Windows Powershell от имени администратора: Пуск> Все программы> Стандартные> Windows PowerShell, щелкните правой кнопкой мыши Windows PowerShell и выберите Запуск от имени администратора.
- В Powershell введите set-executionpolicy remotesignedи нажмите Enter
- Введите Yи нажмите Enter, чтобы разрешить PowerShell запускать сценарий, который вы только что создали в Блокноте (вы можете изменить это после того, как закончите, чтобы обеспечить безопасность вашей системы).
- Введите & "C:\MyPowerShells\Edit-LNK-files.ps1"
- Нажмите Enter, чтобы выполнить "Dry Run" (Отличная идея, Терренс! но я поменял это на дефолт)
- Просмотрите вывод "Пробного прогона" - пути изменились соответствующим образом?  Если нет, измените переменные $newStringи$oldStringсоответствующим образом, затем повторите шаги 6-8, чтобы повторить пробный прогон.  В противном случае перейдите к шагу 9.
- Если пробный запуск выглядит хорошо, повторите шаг 6, но на этот раз добавьте параметр -RealRun, чтобы он выглядел как & "C:\MyPowerShells\Edit-LNK-files.ps1" -RealRun.  Теперь, когда вы нажмете Enter, это на самом деле изменит.LNK файлы
Вот отредактированный скрипт:
[CmdletBinding()]
Param(
    [Parameter(Mandatory=$False,Position=1)]
    [string] $oldString="\\contoso\Projects\rhinoexhibit\",
    [Parameter(Mandatory=$False,Position=2)]
    [string]$newString="\\city.contoso.com\Departments\AlphaDesignGroup\Projects\rhinoexhibit\",
    [Parameter(Mandatory=$False,Position=3)]
    [string]$searchPath="C:\My LNKs\",
    [switch]$RealRun
)
$shell = new-object -com wscript.shell
$filesFound= 0
if ( $RealRun ) {
   write-host "Executing real run" -foregroundcolor red -backgroundcolor black
} else {
   write-host "Executing dry run" -foregroundcolor green -backgroundcolor black
}
dir $searchPath -filter *.lnk -recurse | foreach {
   $lnk = $shell.createShortcut( $_.fullname )
   $oldPath= $lnk.targetPath
   $oldArgs= $lnk.Arguments
   $lnkRegex = ",*" + [regex]::escape( $oldString )
   if ( $oldPath -match $lnkRegex ) {
      $newPath = $oldPath -replace $lnkRegex, $newString
      write-host "Found: " $_.fullname -foregroundcolor yellow -backgroundcolor black
      write-host " Replace: " $oldPath
      write-host " With:    " $newPath
      $filesFound++
      if ( $RealRun ) {
         $lnk.targetPath = $newPath
         $lnk.Save()
      }
   }
   if ( $oldArgs -match $lnkRegex ) {
      $newArgs = $oldArgs -replace $lnkRegex, $newString
      write-host "Found:  " $_.fullname -foregroundcolor yellow -backgroundcolor black
      write-host "Target: " $oldPath -foregroundcolor yellow -backgroundcolor black
      write-host " Replace Args: " $oldArgs
      write-host " With Args:    " $newArgs
      $filesFound++
      if ( $RealRun ) {
         $lnk.Arguments = $newArgs
         $lnk.Save()
      }
   }
}
if ($filesFound -eq 0) {
    write-host "No LNK files found with " $oldString "in target or arguments" -foregroundcolor red -backgroundcolor black
}
else {
    if ($RealRun) {
        write-host $filesFound "files found and edited" -foregroundcolor red -backgroundcolor black
    }
    else {
        write-host $filesFound "files found" -foregroundcolor green -backgroundcolor black
    }
}
Запуск этого скрипта должен успешно измениться.LNK сокращает файлы со следующим в поле Target:
\\contoso\Projects\rhinoexhibit\rhinospecifications.pdf
в
\\city.contoso.com\Departments\AlphaDesignGroup\Projects\rhinoexhibit\rhinospecifications.pdf
и из 
"C:\Program Files (x86)\FOXIT READER\Foxit Reader.exe" /A page=37 "\\contoso\Projects\rhinoexhibit\rhinospecifications.pdf"
в
"C:\Program Files (x86)\FOXIT READER\Foxit Reader.exe" /A page=37 "\\city.contoso.com\Departments\AlphaDesignGroup\Projects\rhinoexhibit\rhinospecifications.pdf"