以编程方式编辑Windows快捷方式

时间:2016-01-29 20:01:02

标签: powershell shortcut

我的快捷方式经常被破坏,因为我移动了东西,不幸的是,Windows链接跟踪器无法跟上。有没有办法以编程方式(使用Powershell)读取和编辑快捷方式的属性?我想运行一个脚本,搜索整个硬盘驱动器(或我指定的任何位置)以查找与目标名称匹配的文件,然后使用该新位置更新快捷方式,假设它是正确的文件。

1 个答案:

答案 0 :(得分:-1)

这是一个用于创建快捷方式的功能。你可以研究一下如何在你的情况下使用它

https://github.com/gangstanthony/PowerShell/blob/master/Create-Shortcut.ps1

# Create-Shortcut
# 
# Create-Shortcut -Source C:\temp\test.txt -DestinationLnk C:\temp\test.txt.lnk
# 
# Arguments
# Description
# FullName
# Hotkey
# IconLocation = '%SystemRoot%\system32\SHELL32.dll,16' # printer
# RelativePath
# TargetPath
# WindowStyle
# WorkingDirectory

function Create-Shortcut {
    param (
        [string]$Source,
        [string]$DestinationLnk,
        [string]$Arguments
    )

    BEGIN {
        $WshShell = New-Object -ComObject WScript.Shell
    }

    PROCESS {
        if (!$Source) {Throw 'No Source'}
        if (!$DestinationLnk) {Throw 'No DestinationLnk'}

        $Shortcut = $WshShell.CreateShortcut($DestinationLnk)
        $Shortcut.TargetPath = $Source
        if ($Arguments) {
            $Shortcut.Arguments = $Arguments
        }
        $Shortcut.Save()
    }

    END {
        function Release-Ref ($ref) {
            ([System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$ref) -gt 0)
            [System.GC]::Collect()
            [System.GC]::WaitForPendingFinalizers()
        }
        $Shortcut, $WshShell | % {$null = Release-Ref $_}
    }
}