%20%E5%8A%A0%E5%85%A5%E5%88%B0%20powershell%20%E4%B8%AD%E7%9A%84%E8%B7%AF%E5%BE%91.png)
我有一個程式想在 Windows PowerShell 中運行。在 cmd 中,我只需輸入script.cmd
,它就會運行腳本。在 PowerShell 中我顯然必須這樣做./script.cmd
。
預設情況下,BASH 的行為類似。要改變 BASH 的行為,你需要 doexport PATH=$PATH:.
然後script.sh
will work 而不僅僅是./script.sh
.
我的問題是...如何script.cmd
在 PowerShell 中工作?我必須做類似的事情嗎export PATH=$PATH:.
?我echo $PATH
在 PowerShell 中做了,但沒有輸出任何內容..
答案1
首先,閱讀get-help about_command_precedence
以了解其工作原理。
接下來,鍵入$env:path
以查看目前的路徑。
您可以將目錄附加到 PATH,如下所示:$env:path += ";C:\Scripts"
您也可以將目前目錄附加到 PATH,如下所示:$env:path += ";."
get-item env:
將顯示所有環境變數。
答案2
如果你想永久地做到這一點,這就是我所做的。
(我不會將 . 添加到路徑中,而是嘗試添加您現在所在的當前目錄)
例如,您可以自行編輯註冊表。
$oldpath = (Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
$newpath = "$oldpath;$($pwd.Path)"
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH -Value $newPath
#final check
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).Path
當然,您需要該權限的管理員權限。因此,如果您不是管理員,那麼讓我們找到另一種方法,powershell 為您提供了另一種方法來執行此操作,如下所示:
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";$($pwd.Path)", "User")