Мне интересно, может ли кто-нибудь мне помочь? Я вырезал несколько скриптов powershell, которые нашел в Интернете, которые создают ярлыки из $source в $destination. Тем не менее, кажется, что он перезаписывается каждый раз, и я хочу, чтобы он создавал .lnk только для нового.
Исходный источник скрипта находится здесь. и это мой текущий нерабочий скрипт. Я добавил следующее, но, похоже, это не работает. Я думаю, мне нужно как-то заставить его проверить $destination, а затем продолжить, если $file.lnk не существует
If ($status -eq $false) {($WshShell.fso.FileExists("$Destination") + "*.lnk")
Полный сценарий:
function Create-ShortcutForEachFile {
Param(
[ValidateNotNullOrEmpty()][string]$Source,
[ValidateNotNullOrEmpty()][string]$Destination,
[switch]$Recurse
)
# set recurse if present
if ($Recurse.IsPresent) { $splat = @{ Recurse = $true } }
# Getting all the source files and source folder
$gci = gci $Source @splat
$Files = $gci | ? { !$_.PSisContainer }
$Folders = $gci | ? { $_.PsisContainer }
# Creating all the folders
if (!(Test-Path $Destination)) { mkdir $Destination -ea SilentlyContinue > $null }
$Folders | % {
$Target = $_.FullName -replace [regex]::escape($Source), $Destination
mkdir $Target -ea SilentlyContinue > $null
}
# Creating Wscript object
$WshShell = New-Object -comObject WScript.Shell
# Creating all the Links
If ($status -eq $false) {($WshShell.fso.FileExists("$Destination") + "*.lnk")
$Files | % {
$InkName = "{0}.lnk" -f $_.sBaseName
$Target = ($_.DirectoryName -replace [regex]::escape($Source), $Destination) + "\" + $InkName
$Shortcut = $WshShell.CreateShortcut($Target)
$Shortcut.TargetPath = $_.FullName
$Shortcut.Save()
}
}
}
Create-ShortcutForEachFile -Source \\myserver.domain.local\Folder1\Folder2\Test -Destination \\myserver2.domain.local\Folder1\Folder2\Test -Recurse
Надеюсь, кто-нибудь может мне помочь, извиняюсь за то, что я новичок в powershell/scripting.
$status
? он никогда не определяется в сценарии - person Theo   schedule 06.10.2020