0

変数に変数文字列を挿入していPATHます。次の方法で変数を設定します。

$var="MyTestPath"
$mypath=[environment]::GetEnvironmentVariable("PATH",[system.environmentvariabletarget]::User) 
[environment]::SetEnvironmentVariable("TEST",$var,[system.environmentvariabletarget]::User)
[environment]::SetEnvironmentVariable("PATH",$mypath+";%TEST%",[system.environmentvariabletarget]::User) 

上記のコードは私には機能しません。%TEST%新しいシェルでパスを確認すると、変数自体が展開されません。で終わる新しいパスを示しています%TEST%。GUIまたはWindowsシェルプロンプトからこれを設定すると、これは常に機能しました。PowerShell から変数を設定すると、この動作が異なるのはなぜですか? この機能は PowerShell で削除されていますか?

スクリプトを実行するたびに変数がパスに追加され続けるため、次のことはしたくありません。

[environment]::SetEnvironmentVariable("PATH",$mypath+";"+$var,[system.environmentvariabletarget]::User) 
4

2 に答える 2

3

この行を変更してみてください:

[environment]::SetEnvironmentVariable("PATH",$mypath+";%TEST%",[system.environmentvariabletarget]::User) 

と:

$test =[environment]::GetEnvironmentVariable("test","user") # this retrieve the rigth variable value
[environment]::SetEnvironmentVariable("PATH", $mypath +";$test",[system.environmentvariabletarget]::User) 

%test%powershell では意味がなく、CMD のように展開することはできません。

$env:testユーザーからではなく、システム環境変数からのみ取得する

于 2012-09-26T05:24:53.197 に答える
1

REG_EXPAND_SZ を使用するレジストリ値 (環境変数に対応する) を効果的に設定したいと考えています。その方法の詳細については、この投稿を参照してください

于 2012-09-26T13:39:49.403 に答える