PowerShell开始 - 工作工作目录
有没有办法为Start-Job命令指定工作目录?
用例:
我在一个目录中,我想用Emacs打开一个文件进行编辑。如果我直接执行此操作,它将阻止PowerShell,直到我关闭Emacs。但是使用Start-Job尝试从我的主目录运行Emacs,从而让Emacs打开一个新文件而不是我想要的文件。
我尝试使用$ pwd指定完整路径,但脚本块中的变量在Start-Job上下文中执行之前不会被解析。因此,强制解决shell上下文中的变量的一些方法也是可接受的答案。
所以,这是我尝试过的,只是为了完整性:
Start-Job { emacs RandomFile.txt }
Start-Job { emacs "$pwd/RandomFile.txt" }
没有找到相关结果
已邀请:
6 个回复
挂帘妈乡
你的脚本看起来像这样:
希望这可以帮助。
梦话快家腹
参数来设置脚本块的工作目录。
距相镭
这里
是预定义的变量,内部取
参数的值
际恃啸称桅
开头的后台作业不会继承当前位置(工作目录)。 它在Windows PowerShell中默认为
,在PowerShell Core中默认为
(从PSv5.1 / PSv6 alpha开始)。 如果您正在使用PowerShell Core并且您要定位当前目录中的文件,则可以使用以下命令,因为默认情况下新的
语法在当前目录中运行作业:
您不能在传递给
的脚本块中直接引用当前会话中的变量。 为了补充jdmichal自己的有用答案和asavartsov的有用答案,这仍然有效: PSv3引入了一种简单的方法来引用脚本块中的当前会话变量,该脚本块在不同的上下文(作为后台作业或远程机器)上执行,通过
范围:
或者:
注意: 这个GitHub问题建议在
cmdlet中添加一个
。
这个GitHub问题报告了令人惊讶的无法在传递给
的脚本块中使用
,即使它在主脚本块(隐含的
参数)中有效。
马口
此方法中的当前目录没有问题。我还创建了一个函数,使其尽可能简单:
然后调用变为:
这适用于Windows 7(Powershell v2)。
掏得透垦滩