powershell - 设置当前位置以匹配与运行脚本驱动器相同的驱动器号
问题描述
在 PowerShell 中,如何动态读取运行脚本所在的驱动器(字母),然后将该驱动器设置为当前位置,以便:
- 脚本中编写的所有相对路径都将在该驱动器中使用(并创建文件/文件夹结构),
- 脚本执行完成后,PS-Command-Prompt 还会显示 Drive(正在运行的脚本所在的位置):
例如,在执行之前,如果当前位置是 C: 盘,即 PowerShell 命令提示符显示“C:\”,而我的脚本位于“D:\ps_scripts\test.ps1”,则脚本中的所有相对路径应在 D: 驱动器中使用(并创建文件/文件夹)。
基本上我正在开发一个安装程序脚本,应该将应用程序安装在存储脚本的驱动器中(即它必须是“相对”而不是“绝对/固定”驱动器)。
TIA
解决方案
经过一番挣扎和几次“试验和错误”,我设法编写了以下脚本,该脚本能够设置仅驱动器的当前位置(省略路径的其余部分),以匹配运行脚本所在的驱动器所在的位置:
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
变量括在 内$()
,以评估它,即将它转换为表达式,一旦我这样做了,瞧!!!
希望这对其他人有帮助。
推荐阅读
- json - Bash 脚本 / JSON - 从 {"Key":"Duration","Value":"N"} 中提取数值
- python - 在 matplotlib 中更改字体无法正常工作
- orm - 在没有 UI 事件的情况下更改模型时的 Odoo v12
- java - 在外部 Spring Boot Java 项目中访问属性 pf application.properties
- regex - Notepad ++如何删除特定字符和符号组合之前的所有字符
- javascript - AngularJS 元素指令不在 HTML 上呈现
- mysql - 配置文件中的 ProxySQL SSL 后端配置
- javascript - Vue JS removeEventListener 不起作用。为什么?
- css - 如何设置适合网格的 HighCharts 的宽度
- javascript - 使用参数重复调用 jquery 函数导致超出最大调用堆栈