将带有转义字符的字符串分配给 属性
Assigning a string with escaped characters to a property
我想为 $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"'
如有疑问,请阅读 documentation. The TargetPath
property takes just the path to the excutable. The arguments go into the 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"'
我想为 $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"'
如有疑问,请阅读 documentation. The TargetPath
property takes just the path to the excutable. The arguments go into the 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"'