Powershell меняет путь к ярлыкам во всех папках и подпапках - PullRequest
0 голосов
/ 07 августа 2020

может кто-нибудь помочь мне с моей проблемой? Я хочу изменить путь сокращений во всех папках и подпапках, потому что мы изменили наш сервер. Вот почему мне нужен код l oop во всех папках и подпапках.

Старый путь определяется как oldPrefix, а путь как newPrefix, я только что поместил здесь заполнители. Код в настоящее время ищет только ярлыки на рабочем столе, мне он понадобится для поиска по всему на рабочем столе (так что, может быть, для l oop?).

$oldPrefix = "OLD SERVER"
$newPrefix = "NEW SERVER"
$searchPath = "$($env:USERPROFILE)\Desktop"

$shell = new-object -com wscript.shell
write-host "Updating shortcut target" -foregroundcolor red -backgroundcolor black

dir $searchPath -filter *.lnk -recurse | foreach {
$lnk = $shell.createShortcut( $_.fullname )
$oldPath= $lnk.targetPath
$lnkRegex = "^" + [regex]::escape( $oldPrefix )

if ( $oldPath -match $lnkRegex ) {
$newPath = $oldPath -replace $lnkRegex, $newPrefix

write-host "Found: " + $_.fullname -foregroundcolor yellow -backgroundcolor black
write-host " Replace: " + $oldPath
write-host " With: " + $newPath
$lnk.targetPath = $newPath
$lnk.Save()
}
}

спасибо.

1 Ответ

0 голосов
/ 07 августа 2020

Если вы измените строку dir на эту, она будет рекурсивной и получит все файлы * .lnk в подкаталогах.

Get-ChildItem -Path $searchPath -Filter *.lnk -Recurse | foreach {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...