2015-08-28 104 views
1

我想为用户创建公共桌面上的快捷方式,但此捷径的此目标路径导致了一些问题。PowerShell中创建快捷方式的目标路径问题

$wshshell = New-Object -ComObject WScript.shell 

$desktop = [System.Environment]::GetFolderPath("desktop") 

$lnk = $wshshell.CreateShortcut("$desktop\CLMCPDEDEV.lnk") 

$lnk.TargetPath = "C:\Program Files (x86)\Unisys\WebEnabler\Web Enabler.exe" "configfile=c:\development-installs\web-enabler-config\CLMCPDEDEV.cfg" 

我在另一个文件夹中的配置文件和exe是在不同的路径。我是电源外壳新手,我如何绕过"C:\Program Files (x86)\Unisys\WebEnabler\Web Enabler.exe""configfile=c:\development-installs\web-enabler-config\CLMCPDEDEV.cfg"之间的空间?当我手动完成这个时,这是完整的捷径。任何指导非常感谢。

+0

是否把一个单引号之前' “C:'和'后.CFG”'帮助吗? –

回答

2

报价从CreateShortcut方法文档:

一个常见的问题是把参数中的 快捷对象,它不起作用TARGETPATH属性。快捷键 的所有参数都必须放在参数属性中。

所以,你必须这样做:

$wshshell = New-Object -ComObject WScript.shell 

$desktop = [System.Environment]::GetFolderPath('Desktop') 

$lnk = $wshshell.CreateShortcut((Join-Path -Path $desktop -ChildPath 'CLMCPDEDEV.lnk')) 

$lnk.TargetPath = 'C:\Program Files (x86)\Unisys\WebEnabler\Web Enabler.exe' 
$lnk.Arguments = 'configfile=c:\development-installs\web-enabler-config\CLMCPDEDEV.cfg' 

$lnk.Save() 
+0

这工作,并将捷径公诸于众我使用了典型的cmd/c xcopy%userprofile%\ desktop \ CLMCPDEDEV.lnk c:\ users \ public \ desktop 然后cmd/c del%userprofile%\ desktop \ CLMCPDEDEV .lnk以避免重复图标 – joextreme

+0

Hi BeatCracker。如果我想要将公共桌面上的特定lnk更改为快捷方式图标,我会使用什么命令?我在一个文件夹中有一个ICO文件,它与我想要clmcpdedev.lnk使用的颜色不同。 – joextreme

+0

不知道,走了另一条路线,谢谢 – joextreme