繁体   English   中英

使用参数从powershell创建cmd的快捷方式 - 异常无法使用0参数保存

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM