1

我阅读使用PowerShell一些文件,并相应地改变当前目录下的,但所有我能做的就是改变目前PowerShell的当前目录,不是调用程序的目录(调用该PS1文件中的cmd.exe的环境)。事情我想:如何使用PowerShell更改cmd的current-dir?

powershell ch-dir.ps1 | cd 

(将无法正常工作,很明显,因为CD是内部命令)

powershell cd $myDir 

(改变电流PowerShell目录,但是当脚本退出时,cmd环境仍然使用的原dir)

我真的很希望我不需要找到脚本的调用者进程(cmd),并对它的cur-dir进行改变......(或者更糟糕的是 - 为了保存目录想在一些env-var然后cd %my_var%因为它需要命令的两行)

+1

很肯定它不可能重新回到父进程并改变它的环境。它只是不这样工作。 – EBGreen

+0

您可以获取当前进程的父级,并且我认为您还可以更改任何进程的当前目录,但这不是问题... – Tar

+1

像* EBGreen *所述,它不起作用。你想通过改变调用者的工作目录来实现什么? –

回答

2

我不知道这是否符合您的需求,但如果你将其设置为使从您的PowerShell脚本输出的不仅是您所需的新的工作目录,你可以这样做:

c:\>for /F %i IN ('powershell -noprofile -command "write-output 'c:\users'" ') DO @cd %i 
c:\Users> 
0

的命令提示符托管你的PowerShell会话,除非你能想出一个办法返回的退出代码的提示,将(对退出代码99999)的变化目录(预定义值,切换?)。就PowerShell而言,他们是不同的流程。

继承人一个很好的例子,您可以尝试: 打开cmd提示符。 打开任务管理器,找到cmd.exe 在您的cmd提示符下键入Powershell 将PowerShell视为不同的进程(检查PID)。 结束powershell进程。看看会发生什么。

另外,如果您需要基于PowerShell脚本中的逻辑从特定目录中的cmd运行某些内容,则可以在PowerShell中使用cmd /c来调用它。

+0

是的,他们在两个不同的进程中运行,我知道,但我认为有可能是一种方式来管命令或东西 – Tar

+0

检查出zdan提供了答案。 –