powershell - 使用 pwd 变量在 powershell 启动时运行命令
问题描述
当您在文件资源管理器中时,您可以单击File > Open Windows Powershell
(或其在快速访问工具栏中的图标)以在文件资源管理器所在的目录中启动 Powershell 的实例。然后我想在此目录中自动运行一个简单的命令并在完成后关闭 Powershell 窗口。
我曾尝试将我的命令添加到我的 Powershell 配置文件中,但它在设置路径变量之前执行并且它运行时$pwd
等于C:\Users\MyUsername
(我的主目录)或C:\WINDOWS\system32
(似乎是某种竞争条件,不知道为什么这样做或其他)。据我所知,这是因为文件资源管理器“在 powershell 中打开按钮”打开了 powershell,然后 cd 到了我在文件资源管理器中所在的目录。因此,当 profile.ps1 运行时,它使用它知道的唯一目录,因为 cd 调用尚未进行。这类似于start powershell.exe
在 cmd vs中运行命令start powershell.exe -command "cd 'C:\wherever'"
。前者正确运行我的配置文件命令,而后者使用 cmd 的当前目录而不是C:\wherever
.
因此,显然在$pwd
从 cmd 打开它并从文件资源管理器打开它的情况下,该变量是在不同时间分配的。有什么方法可以将配置文件中的命令的执行延迟到 shell 完全加载之后?简单地休眠脚本并没有帮助。
或者,如果有人知道如何编辑注册表以便我可以更改单击的行为File > Open Windows Powershell
(因为它必须有权访问存储当前目录的某个变量,并且我假设它以该变量作为参数调用 Powershell 可执行文件 cd'd to),那也可以。
再说一次,我可能File > Open Windows Powershell
对 Powershell 实例化过程的工作方式和工作方式非常天真。
非常感谢任何帮助,谢谢!
解决方案
找到了一种更清洁、更快捷的方法来做到这一点。我所要做的就是将我的个人资料设置成这样,不需要任何任务或第二个 powershell 实例
function Prompt
{
& C:\Program` Files\MyProgram\MyProgram.exe "$pwd"
stop-process -Id $PID
}
推荐阅读
- jquery - 当响应为 json 时,Laravel 响应 id 会发生变化,但是在转储数据时,id 就在那里
- python - 设置 matplotlib 子图的大小
- r - kNN算法只预测一组
- linux - 从 Pam 模块检索客户端端口号
- excel - 如何使用守夜人打印excel中存在的单元格的数据类型?
- matplotlib - 如何为添加 Cartopy 形状特征的 GeoAxes 添加图例?
- javascript - 是什么让我的变量在从 DOM 中选择时具有 null 值
- kubernetes - 为什么 kubectl 无法连接到我的 IBMcloud kubernetes-cluster?
- postgresql - 故障转移后 pg_stat_replication 为空
- java - 如何将字符串映射到 Java 中 HashMap 中的 PriorityQueue?