首页 > 解决方案 > 设置当前位置以匹配与运行脚本驱动器相同的驱动器号

问题描述

在 PowerShell 中,如何动态读取运行脚本所在的驱动器(字母),然后将该驱动器设置为当前位置,以便:

  1. 脚本中编写的所有相对路径都将在该驱动器中使用(并创建文件/文件夹结构),
  2. 脚本执行完成后,PS-Command-Prompt 还会显示 Drive(正在运行的脚本所在的位置):

例如,在执行之前,如果当前位置是 C: 盘,即 PowerShell 命令提示符显示“C:\”,而我的脚本位于“D:\ps_scripts\test.ps1”,则脚本中的所有相对路径应在 D: 驱动器中使用(并创建文件/文件夹)。

基本上我正在开发一个安装程序脚本,应该将应用程序安装在存储脚本的驱动器中(即它必须是“相对”而不是“绝对/固定”驱动器)。

TIA

标签: powershell

解决方案


经过一番挣扎和几次“试验和错误”,我设法编写了以下脚本,该脚本能够设置仅驱动器的当前位置(省略路径的其余部分),以匹配运行脚本所在的驱动器所在的位置:

Write-host ('$PSScriptRoot: ' + $PSScriptRoot)    #Checking full path of own running script.
$drive = ((Get-Item $PSScriptRoot).PSDrive.Name)  #Getting drive letter of running script.
Set-Location -Path "$($drive):\"                  #Setting Disk-Drive on PS-Cmd-Prompt.

注意:我在最后一行苦苦挣扎/出错,因为我忘记将$drive变量括在 内$(),以评估它,即将它转换为表达式,一旦我这样做了,瞧!!!

希望这对其他人有帮助。


推荐阅读