![](/img/trans.png)
[英]CMD/PowerShell start app with passed “Start in” path parameter without creating shortcut
[英]Creating a shortcut for cmd from powershell with arguments - exception cannot save with 0 args
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\Users\$user\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\CheckLauncher.lnk")
$Shortcut.TargetPath = "cmd.exe"
$Shortcut.Arguments = "C:\Users\Administrator\Desktop\Packages\checkLauncher.bat"
错误
Exception calling "Save" with "0" argument(s): "Unable to save shortcut "C:\Use
rs\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
CheckLauncher.lnk"."
At C:\Users\Administrator\Desktop\Packages\Setup.ps1:22 char:15
+ $Shortcut.Save <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
我向你保证,这条路径 - C:\\ Users \\ Administrator \\ Desktop \\ Packages \\ checkLauncher.bat确实存在。 请帮忙找出问题所在。
等待任何帮助..在此先感谢
我可以使用这种方法成功创建一个快捷方式,但是你在其他地方定义了$user
,因为默认情况下没有定义它。 也许你打算使用$env:username
? 或者,您可以使用$home
来获取路径的c:\\users\\<username>
部分。 更好的是使用这个.NET方法:
[Environment]::GetFolderPath([environment+specialfolder]::ApplicationData)
我想你也想指定这样的参数:
$Shortcut.Arguments = "/c C:\Users\Administrator\Desktop\Packages\checkLauncher.bat"
以下工作对我来说很好:
$roaming = [environment]::GetFolderPath([environment+specialfolder]::ApplicationData)
$path = "$roaming\Microsoft\Windows\Start Menu\Programs\Startup\UpdateBinDir.lnk"
$WshShell = New-Object -comObject WScript.Shell
$shortcut = $WshShell.CreateShortcut($path)
$shortcut.TargetPath = "cmd.exe"
$shortcut.Arguments = "/c C:\bin\updateBinDir.bat"
$shortcut.Save()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.