0

我想为$Shortcut对象的字符串属性设置字符串路径,但它无法正常工作。

运行此代码:

$WshShell = New-Object -comObject WScript.Shell ;
$Shortcut = $WshShell.CreateShortcut('c:\aaa.lnk');
$Shortcut.TargetPath = '"c:\Program Files\MyApp.exe" /param1: (2) /param2 "val"'

设置时出现此错误$Shortcut.TargetPath

Exception setting "TargetPath": "The parameter is incorrect. (Exception from HRESULT:
0x80070057 (E_INVALIDARG))"
At line:1 char:11
+ $Shortcut. <<<< TargetPath = '"c:\Program Files\MyApp.exe" /param1: (2) /param2 "val"'
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyAssignmentException

奇怪的是,试图在新的自定义对象上重现这种行为,问题并没有出现。只需运行以下命令:

$object = New-Object -TypeName PSObject
Add-Member -MemberType NoteProperty -Name prop -Value "aaa"
$object.prop = '"c:\Program Files\MyApp.exe" /param1: (2) /param2 "val"'
4

1 回答 1

1

如有疑问,请阅读文档。该TargetPath属性仅采用可执行文件的路径。参数进入Arguments属性:

$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut('c:\aaa.lnk')
$Shortcut.TargetPath = 'c:\Program Files\MyApp.exe'
$Shortcut.Arguments  = '/param1: (2) /param2 "val"'
于 2015-08-14T11:30:52.573 回答