【问题标题】:Creating a directory shortcut in powershell在 powershell 中创建目录快捷方式
【发布时间】:2015-10-06 05:41:32
【问题描述】:

我正在编写我的第一个 powershell 脚本,但遇到了一点麻烦。

到目前为止,我的系统创建了一个目录树并用文件填充它。最后一步是在我的桌面上放置一个快捷方式。

我想出了下面的代码:

$ShortcutFile = "$home\Desktop\" + $protocol + ".lnk"
If ( (test-path -path "$ShortcutFile") -ne $true)
{
    $WScriptShell = New-Object -ComObject WScript.Shell
    $Shortcut = $WScriptShell.CreateShortcut($ShortcutFile)
    $Shortcut.TargetPath = $root_path
    $Shortcut.Save()
}

我相信任何有经验的 powershell 用户都知道,这不起作用。创建一个文件而不是一个目录。我想解决此问题的正确方法是更改​​ WScript.Shell 中的对象成员之一,该控件是文件类型。我没有运气找到任何关于如何具体执行此操作的资源,或任何其他方式来执行此操作。我在 MSDN 网站上找到了 API,但那里只列出了几个成员。必须有更多。 实现这一目标的最佳方法是什么?

谢谢

【问题讨论】:

  • 创建的是文件而不是目录。 不知道你的意思,快捷方式是一个文件,即使它指向目录。我没有看到您的代码有任何问题。如果我定义$protocol='SomeName';$root_path='C:\',那么您的代码将毫无问题地工作。
  • 没有brianist。那篇文章讨论了创建文件。不是目录。
  • @mreff555 你确定$root_path 指向现有目录吗?顺便说一句,使用@UserName 通知用户您的评论。
  • 您的代码在 Windows 7/PS 4.0 上对我来说非常好。 $ShortcutFile 有什么价值? Test-Path $ShortcutFile -IsValid 返回什么?您是否希望快捷方式可以像 NTFS 连接一样从命令行导航?

标签: powershell


【解决方案1】:

假设您的意思是快捷方式类型是File 而不是File folder,那么解决方法是制作一个Application 启动器,它始终有效。

我最初找到了这个解决方案here

    $wsshell = New-Object -ComObject WScript.Shell
    $lnk = $wsshell.CreateShortcut($ShortcutFile)
    $lnk.WindowStyle = 1
    $lnk.TargetPath = "explorer.exe"
    $lnk.Arguments = $TargetPath
    $lnk.IconLocation = "explorer.exe,0"
    $lnk.save() # This will overwrite the previous link if it existed

【讨论】:

    【解决方案2】:

    我在创建一个不存在的目录的快捷方式时遇到了这种情况。如果我只是提前创建了目录,那么快捷方式可以正常工作。

    【讨论】:

    • 是的,就是这样。问题是它是故意的。我试图像 Linux 符号链接一样使用它。
    【解决方案3】:
    New-Item -itemtype symboliclink -Path "PathWhereYouWantToPutShortcut" -name "NameOfShortcut" -value "PathOfWhatYourTryingToLinkTo"
    

    New-Item Documentation

    【讨论】:

    • 使用New-ItemNew-Object 有什么好处,就像四年前接受的答案中所做的那样?
    • 对我来说。更容易阅读。
    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 2010-09-19
    • 2014-10-06
    • 1970-01-01
    • 2012-03-30
    • 2012-12-23
    • 2014-05-12
    • 2021-03-09
    相关资源
    最近更新 更多