我正在使用Powershell快捷方式(C:\ Windows .... \ powershell.exe-文件'D:\ powershell \ script.ps1')启动脚本。
有没有一种方法可以使脚本将其当前位置更改为所述快捷方式的位置?
示例:脚本本身位于D:\ powershell \中,而快捷方式位于C:\ Work \ Project1中。我需要将脚本CD刻录到“ C:\ Work \ Project1 \”。
谢谢
答案 0 :(得分:2)
您可以创建一个从其所在目录开始的快捷方式。您要做的就是修改快捷方式的“开始于”属性,然后将其清空。那就对了。将其设置为空。
然后,当您要调用该快捷方式时,请先导航到该文件夹(目录),然后再调用它。我将这种技术用于启动powershell但不启动脚本的快捷方式。我尚未使用启动脚本的快捷方式对其进行测试。
答案 1 :(得分:1)
Walter Mitty's helpful answer提供了有效的解决方案,前提是 可以从 Desktop 或 File Explorer 中打开快捷方式文件。 / p>
此答案提供了背景信息。
您必须将所需的工作目录配置为快捷文件 的一部分,因为您调用的脚本对调用它的快捷方式一无所知。
因此,要配置特定于的工作目录(例如,C:\Work\Project1
),请在Start in:
的快捷方式文件的“属性”对话框中将其指定字段。
如果要以编程方式更新快捷方式文件(*.lnk
)的工作目录 ,请使用this answer中具有.WorkingDirectory
属性的技术。
注意:在两种情况下,都只能将绝对路径配置为工作目录:文件资源管理器仅允许您始终输入绝对路径,而编程方法允许您分配相对路径,相对于快捷方式的位置,它立即解析为绝对路径。
要将快捷方式的自己的目录用作工作目录,您可以空白 Start in:
字段/ {{1} }属性,但请注意限制:
仅适用,当从桌面或文件资源管理器 打开了这样的快捷方式时>。
相反,从任务栏或(仅限Windows 10之前)开始菜单打开它,工作目录为.WorkingDirectory
(通常是$env:windir\System32
)。
如果在这种情况下快捷方式的目标是应用程序(而不是文档),则该快捷方式调用的应用程序-包括C:\Windows\System32
和cmd.exe
-从配置的/隐含的开始工作目录。
注意powershell.exe
:如果将工作目录指定为 UNC路径,则cmd.exe
将无法更改为该目录;作为解决方法,请使用带有映射驱动器的路径(但是,显然,在打开快捷方式时必须映射该驱动器)。
答案 2 :(得分:-1)
您可以将快捷方式的TargetPath属性与set-location cmdlet一起使用(也许做一个get-childitem $ psscriptroot,名称类似于脚本名,扩展名为.lnk)