【问题标题】:create "Computer" and "Documents" shortcut with powershell使用 powershell 创建“计算机”和“文档”快捷方式
【发布时间】:2014-09-04 21:53:39
【问题描述】:

我正在尝试为用户自动化一些东西,其中之一是在他们的桌面上添加“计算机”和“文档”快捷方式。

我在网上找到下面的代码,把目标改成“explorer.exe /e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}”

$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut(C:\users\username\Desktop\Computer.lnk")
$Shortcut.TargetPath = "explorer.exe \/e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"
$Shortcut.Save()

但是当我运行此代码时,我收到以下错误:

“使用“0”参数调用“保存”的异常:“无法保存快照”

如果有其他简单的方法,我很想听听 :)

提前谢谢大家。

【问题讨论】:

  • 使用组策略首选项更简单,如 here 所述。
  • 我在尝试用这个设置 TargetPath 时得到一个完全不同的错误(“TargetPath:参数不正确”)。尝试设置 TargetPath = "explorer.exe" 和 Arguments = "\/e,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}"。另外,快捷方式是在当前用户的文件夹中还是其他用户?
  • 嗨,迈克。我正在使用我的管理员帐户运行脚本以在用户桌面上创建快捷方式。下面的马特脚本就像一个魅力,除了当我使用我的管理员帐户运行脚本时,我收到错误消息。

标签: powershell shortcut


【解决方案1】:

我想我在这里有一个很好的解决方案。另外,我自己的无能,我想我弄清楚了你的错误原因

首先我找到了一种cleaner 方法来制作特殊文件夹的快捷方式。

$WshShell = New-Object -ComObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("C:\users\user\Desktop\MacadizamianNizzut.lnk")
$Shortcut.TargetPath = [environment]::getfolderpath("mycomputer")
$Shortcut.Save()

您也可以使用mydocuments 代替mycomputer。有关您可以使用的特殊文件夹的完整列表:[enum]::GetNames([System.Environment+SpecialFolder])。提示 JRV 对我上面的链接发表评论。

至于你的错误"Exception calling "Save" with "0" arguments : "Unable to save shortcut"。我也得到了那个错误。实际上,这是因为为 createshortcut 传递的值不是有效路径。我并不是说文件必须存在,但文件夹路径确实存在。我犯了一个错字并得到了错误。使用我的示例,此命令将失败:Test-Path ""C:\users\user\Desktop"

一些错误预防

我们可以做的是将快捷路径分配给一个变量并根据它测试路径。

$ShortcutPath = "C:\users\username\desktop\test.lnk"
If(Test-Path -Path (Split-Path -Path $ShortcutPath -Parent)){
    $WshShell = New-Object -ComObject WScript.Shell
    $Shortcut = $WshShell.CreateShortcut($ShortcutPath)
    $Shortcut.TargetPath = [environment]::getfolderpath("mycomputer")
    $Shortcut.Save()
} Else {
    Write-Host "Unable to create shortcut. Check the path $ShortcutPath."
}

【讨论】:

  • 这很完美。非常感谢。唯一的问题是,如果我使用我的管理员帐户运行脚本,我仍然会收到“异常调用...”错误(这就是我运行脚本的方式)。但是,如果我使用用户帐户运行脚本,它会完美运行。关于如何解决这个问题的任何想法?
  • 你在你的脚本中究竟使用了什么CreateShortcut("C:\users\user\Desktop\MacadizamianNizzut.lnk")。如果您的等效设备通过此测试,我希望您:Test-Path "C:\users\user\Desktop"
  • 我刚刚尝试了测试路径并被拒绝访问。很奇怪。但这是我的管理员帐户。为什么我会被拒绝访问?
  • 您是否以管理员身份运行?我的意思是你启用了UAC?您仍然需要提升会话的权限。
  • 我正在使用我的管理员帐户运行 PS。
猜你喜欢
  • 2012-03-30
  • 2018-10-08
  • 1970-01-01
  • 2015-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
相关资源
最近更新 更多