PowerShell のパスに cwd / pwd / (.) を追加する

PowerShell のパスに cwd / pwd / (.) を追加する

Windows PowerShell で実行したいプログラムがあります。cmd では、入力するだけscript.cmdでスクリプトが実行されます。PowerShell では、どうやら を実行する必要があるようです./script.cmd

BASH はデフォルトで同様に動作します。BASH の動作を変更するには、 を実行する必要がありexport PATH=$PATH:.、その後はscript.shではなく が機能します./script.sh

script.cmd私の質問は... PowerShell で動作させるにはどうすればよいかということです。 と同様の操作を行う必要がありますかexport PATH=$PATH:.? PowerShell で実行しましたecho $PATHが、何も出力されませんでした。

答え1

まず、get-help about_command_precedenceこれがどのように機能するかを読んでください。

次に、$env:path現在の 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")

関連情報