如何使用 PowerShell 创建快捷方式

我想用 PowerShell 为这个可执行文件创建一个快捷方式:

C:\Program Files (x86)\ColorPix\ColorPix.exe

这怎么可能呢?

227725 次浏览

我不知道 Powershell 中有没有原生的 cmdlet,但是您可以使用 com object:

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()

您可以在 $pwd 中创建一个 powershell 脚本,并将其保存为 set- 快捷方式. ps1

param ( [string]$SourceExe, [string]$DestinationPath )


$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()

然后这么说

Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"

如果要向目标 exe 传递参数,可以通过以下方法完成:

#Set the additional parameters for the shortcut
$Shortcut.Arguments = "/argument=value"

$快捷方式之前保存()。

For convenience, here is a modified version of set-shortcut.ps1. It accepts arguments as its second parameter.

param ( [string]$SourceExe, [string]$ArgumentsToSourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $ArgumentsToSourceExe
$Shortcut.Save()

对 PowerShell 5.0 New-ItemRemove-ItemGet-ChildItem的初始版本进行了增强,以支持创建和管理符号链接。New-Item< em > 项目类型 参数接受一个新值 SymbolicLink。现在可以通过运行 New-Item cmdlet 在一行中创建符号链接。

New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"

小心 符号链接不同于 Shortcut,快捷方式只是一个文件。它们有一个大小(一个小的,只引用它们指向的地方) ,并且它们需要一个应用程序来支持该文件类型才能使用。符号链接是文件系统级别的,所有东西都将其视为原始文件。应用程序使用符号链接不需要特殊支持。

无论如何,如果你想使用 Powershell 创建一个 < em > 以管理员身份运行快捷方式,你可以使用

$file="c:\temp\calc.lnk"
$bytes = [System.IO.File]::ReadAllBytes($file)
$bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON (Use –bor to set RunAsAdministrator option and –bxor to unset)
[System.IO.File]::WriteAllBytes($file, $bytes)

如果有人想要更改.LNK 文件中的其他内容,可以参考 Microsoft 官方文档