是否有可以传递给 Windows 快捷方式目标的特殊参数?
上下文参数如:当前快捷方式的名称、其完整路径、快捷方式文件夹名称或其他?我们假设元参数 $shortcutname 是快捷方式名称:
TARGET: "c:\folder1\subfolder\myprogram.exe" $shortcutname
一个用例:
假设一个程序有一个参数,用于标识其业务中的某些内容,在这个例子中,假设该程序需要一个主机名和许多其他参数。主机名是会更改的唯一参数,而所有其他参数都是固定的。考虑以下情况:
myprogam -p1 blablabla -p2 123:5567 -p3 asbc.qwe -p4 "xxx" -hostname $hostname
好吧,有些用户没有编辑快捷方式的技能,但他们知道如何在 Windows 资源管理器中更改文件名。我们可以向用户解释,只需复制并粘贴快捷方式并将其名称更改为与所需主机名匹配的名称。当然,如果可以将快捷方式名称作为元参数传递给快捷方式的目标。
因此,一种解决方法是制作一个可以处理该问题的 .bat 文件。然后,使用相同的过程,复制并粘贴,并调整名称以匹配所需的主机名,但在某些系统中,管理员的策略可能会成为 .bat 脚本的障碍。
需要说的是,用户已经在使用这些快捷方式,其中有几十个文件夹,但它们是由支持团队创建的。
答案1
除非您明确指定快捷方式文件,否则没有当前快捷方式。您必须使用 wscriptcreateshortcut
方法(也适用于现有快捷方式)请参阅此脚本:
$ShortCutFile = "C:\Users\$env:UserName\Desktop\Google Chrome.lnk"
$Wsh = New-Object -ComObject WScript.Shell
$ShortCut = $wsh.CreateShortcut($ShortCutFile )
$ShortCut|Get-Member
$ShortCut|Format-List
输出:
TypeName: System.__ComObject#{f935dc23-1cf0-11d0-adb9-00c04fd58a0b}
Name MemberType Definition
---- ---------- ----------
Load Method void Load (string)
Save Method void Save ()
Arguments Property string Arguments () {get} {set}
Description Property string Description () {get} {set}
FullName Property string FullName () {get}
Hotkey Property string Hotkey () {get} {set}
IconLocation Property string IconLocation () {get} {set}
RelativePath Property string RelativePath () {set}
TargetPath Property string TargetPath () {get} {set}
WindowStyle Property int WindowStyle () {get} {set}
WorkingDirectory Property string WorkingDirectory () {get} {set}
FullName : C:\Users\UserName\Desktop\Google Chrome.lnk
Arguments :
Description : Internetzugriff
Hotkey :
IconLocation : C:\Program Files (x86)\Google\Chrome\Application\chrome.exe,0
RelativePath :
TargetPath : C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
WindowStyle : 1
WorkingDirectory : C:\Program Files (x86)\Google\Chrome\Application
您可以修改$ShortCut
属性,然后使用该.save
方法。