我想使用PowerShell为该可执行文件创建快捷方式:
C:\Program Files (x86)\ColorPix\ColorPix.exe
如何才能做到这一点?
我想使用PowerShell为该可执行文件创建快捷方式:
C:\Program Files (x86)\ColorPix\ColorPix.exe
如何才能做到这一点?
Answers:
我在Powershell中不知道任何本机cmdlet,但是可以使用com对象代替:
$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中创建另存为set-shortcut.ps1的powershell脚本
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"
在$ Shortcut.Save()之前。
为了方便起见,这是set-shortcut.ps1的修改版本。它接受参数作为其第二个参数。
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()
Set-ShortCut
cmdlet的语法更像MKLINK
,或者Set-Alias
别名或链接是第一个参数,然后是目标。 param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
变通办法的一个限制是,用于命名.lnk文件的字符集非常有限。例如,包含→的名称将失败。如果需要更好的字符支持,一种解决方法是在创建.lnk文件时[Web.HttpUtility]::UrlEncode()
(在之后Add-Type -AN System.Web
)文件名,然后使用Rename-Item将其重命名为UrlDecoded名称。
SpecialFolders
WScript对象的方法可能会派上用场:$WshShell.SpecialFolders("Desktop")
将为您提供真正的路径桌面文件夹,您可以在调用时随后使用它CreateShortcut
。
PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
。它创建了一个可以从Windows资源管理器中看到的快捷方式,但是当我输入cd home
PS本身时,我会遇到一个错误cd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
从PowerShell 5.0 New-Item
,Remove-Item
和开始,Get-ChildItem
已进行了增强,以支持创建和管理符号链接。该ItemType的进行参数New-Item
接受一个新值,SymbolicLink。现在,您可以通过运行New-Item cmdlet在一行中创建符号链接。
New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
要小心一个SymbolicLink是从不同的快捷方式,快捷方式只是一个文件。它们有一个大小(很小,只引用它们指向的位置),并且需要一个应用程序来支持该文件类型才能使用。符号链接是文件系统级别的,所有内容都将其视为原始文件。应用程序不需要特殊支持即可使用符号链接。
无论如何,如果要使用Powershell创建“运行方式管理员”快捷方式,可以使用
$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的官方文档。
New-Item
in创建的符号链接"${env:AppData}\Microsoft\Windows\SendTo"
不会显示在资源管理器的“发送至”菜单中,并且不允许自定义快捷方式属性,例如图标或工作目录。
New-Item -ItemType SymbolicLink -RunAsAdmin ...
。
& C:\temp\calc.lnk
)时也是如此。你能指望什么 ?