【发布时间】:2015-10-27 05:06:06
【问题描述】:
我有以下调用 WSHShell 的 powershell 代码,它将在 Win7/8 的开始菜单中创建一个快捷方式,但我无法弄清楚如何让 powershell 在目标中的参数之前在 UNC 路径周围传递所需的引号行。
我想要什么: "\\UNCPATH1\Directory\application.exe" 参数A 参数B
我得到了什么: \\UNCPATH1\Directory\application.exe 参数A 参数B
目前使用的代码:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:ProgramData\Microsoft\Windows\Start Menu\Programs\supercoolprogram\mrincredible.lnk")
$Shortcut.TargetPath = "\\UNCPATH1\Directory\application.exe"
$Shortcut.Arguments = "argumentA ArgumentB"
$Shortcut.WorkingDirectory = "\\UNCPATH1\Directory"
$Shortcut.Save()
使用代码示例进行编辑...感谢 TheMadTechnician 和 Speerian,他们都有工作示例。 Windows 正在从应用程序 UNC 路径中没有空格的快捷方式中去除目标字段中的引用路径。这两个代码示例都适用于带有空格的路径。
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:ProgramData\Microsoft\Windows\Start Menu\Programs\supercoolprogram\mrincredible.lnk")
$Shortcut.TargetPath = "`"\\UNCPATH1\Directory1\application.exe`""
$Shortcut.Arguments = "argumentA ArgumentB"
$Shortcut.WorkingDirectory = '"\\UNCPATH1\Directory1"'
$Shortcut.Save()
或
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:ProgramData\Microsoft\Windows\Start Menu\Programs\supercoolprogram\mrincredible.lnk")
$Shortcut.TargetPath = """\\UNCPATH1\Directory 1\application.exe"""
$Shortcut.Arguments = "argumentA ArgumentB"
$Shortcut.WorkingDirectory = "\\UNCPATH1\Directory 1"
$Shortcut.Save()
在第二个示例中,请注意 UNC 路径中的空格以及从快捷方式属性中的工作目录中删除的单引号。 (windows会自动添加到这里)
【问题讨论】:
-
我设法遇到了相反的问题。我在设置 TargetPath 时不包含引号,但它们会添加到生成的快捷方式中。
标签: powershell arguments quotes shortcuts wsh