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提供了答案。 –