将当前位置设置为与运行脚本的驱动器相同的驱动器号

时间:2018-11-09 12:44:53

标签: powershell

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

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

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

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

TIA

1 个答案:

答案 0 :(得分:0)

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

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内的$()变量括起来进行评估,即将其转换为 表达 ,我很快就做到了,瞧!

希望这对其他人有帮助。