使用PowerShell脚本创建桌面快捷方式运行报错,如何解决?
问题排查点
- 路径拼接错误
你使用Join-Path时ChildPath参数开头额外加了反斜杠\,会触发Join-Path的路径解析规则,直接忽略前面传入的$destination路径,最终生成的$source_path会落在磁盘根目录,要么触发权限错误要么提示路径不存在。 - 公共桌面写入权限不足
AllUsersDesktop对应系统公共桌面目录,默认普通用户账户没有该目录的写入权限,直接写入会返回权限拒绝错误。如果确实需要写入公共桌面,必须以管理员身份运行PowerShell脚本;如果仅需要当前用户桌面可用,可以将AllUsersDesktop替换为Desktop。 - 图标路径有效性问题
需要提前确认C:\Users\Public\Pictures\ShortcutIcon.ico文件真实存在,路径不存在时调用Save()方法会直接抛出异常。
修复后示例代码
$new_object = New-Object -ComObject WScript.Shell # 若需要写入公共桌面,请保留AllUsersDesktop并以管理员权限运行脚本 $destination = $new_object.SpecialFolders.Item("Desktop") # ChildPath去掉开头的反斜杠,让Join-Path自动处理路径拼接 $source_path = Join-Path -Path $destination -ChildPath "Test Intranet.url" $source = $new_object.CreateShortcut($source_path) $source.TargetPath = "https://sharepoint.com/" # 可提前判断图标文件是否存在,不存在时可以替换为系统自带图标路径,比如%SystemRoot%\system32\shell32.dll,13 $source.IconLocation="C:\Users\Public\Pictures\ShortcutIcon.ico" $source.Save()
内容的提问来源于stack exchange,提问作者Kelly Tan
相关产品推荐
相关产品推荐

