gpt4 book ai didi

powershell - 在powershell中使用参数为快捷方式创建带引号的路径

转载 作者:行者123 更新时间:2023-12-02 22:13:09 30 4
gpt4 key购买 nike

我有以下 powershell 代码调用 WSHShell,它将在 Win7/8 的开始菜单中创建一个快捷方式,但我无法弄清楚如何让 powershell 在目标行中的参数之前传递 UNC 路径周围所需的引号。

我要的是:
“\\UNCPATH1\Directory\application.exe”参数A ArgumentB

我得到了什么:
\\UNCPATH1\Directory\application.exe 参数A ArgumentB

目前使用的代码:

$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会自动添加到这里)

最佳答案

将引用的字符串放在其他引号中,因此 "\\UNCPATH1\Directory\application.exe"会变成'"\\UNCPATH1\Directory\application.exe"' .

$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()

编辑: ……我错了。这确实适用于 WorkingDirectory属性但不是 TargetPath属性(property)。有效的是将您的字符串三重引用。所以,这导致我们:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$([environment]::GetFolderPath("Desktop"))\mrincredible.lnk")
$Shortcut.TargetPath = """\\UNCPATH1\Directory 1\application.exe"""
$Shortcut.Arguments = "argumentA ArgumentB"
$Shortcut.WorkingDirectory = '"\\UNCPATH1\Directory"'
$Shortcut.Save()

至少在 Windows 8.1 上运行良好。

关于powershell - 在powershell中使用参数为快捷方式创建带引号的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815286/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com