#author("2021-05-09T09:15:30+09:00","default:ryuichi","ryuichi")
#author("2021-05-09T09:16:12+09:00","default:ryuichi","ryuichi")
* 環境変数の操作 - env [#q2ef1292]

** 環境変数一覧を取得する [#o495b1b1]

 Get-ChildItem env:
 dir env:             # エイリアス

*** システム環境変数・ユーザー環境変数それぞれの一覧を取得する [#f75381ff]

 [Environment]::GetEnvironmentVariables("Machine") # システム環境変数一覧
 [Environment]::GetEnvironmentVariables("User")    # ユーザー環境変数一覧
 [Environment]::GetEnvironmentVariables("Process") # dir env: と同等

- コマンドレットではこれに該当するものがない。
- env:で取得するのはPowerShell実行時のプロセス下の設定。
- https://stackoverflow.com/questions/30675480/windows-user-environment-variable-vs-system-environment-variable

** 環境変数を検索する [#jcc95605]

 Get-ChildItem -Path env:*user*


** 環境変数を取得する [#x3331953]

 Get-ChildItem env:APPDATA


*** ユーザー環境変数を取得する [#f418744d]

 [Environment]::GetEnvironmentVariable("Path", "User")

** 環境変数を修正する [#e308a32d]

 $env:Path += ";C:\foo\bin"

** 永続的に環境変数を修正する [#t12b2dde]

 [Environment]::SetEnvironmentVariable( "foo", 123, [System.EnvironmentVariableTarget]::Machine )

 [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\bin", [EnvironmentVariableTarget]::Machine

*** %APPDATA%などの変数記法を使う場合: [#w0295ad0]
 [environment]::SetEnvironmentVariable("VIM", "%APPDATA%\Vim", "User")

*** コマンドプロンプトを使う場合 [#zd24294b]

 setx Path "c:\java\bin"

*** SetEnvironmentVariable()でPATHを指定するのは危険 ⚠️ [#meb10141]
*** SetEnvironmentVariable()でPATHを指定するのは危険 🚩 [#meb10141]

- SetEnvironmentVariable()で”Machine"や"User"を指定するとレジストリを変更することになるが、間違ってPATHを指定するとシステムに重大な障害が発生する
- したがって、特別な理由がない限りは使わない方がいい

** 参考 [#i90988ed]

- https://stackoverflow.com/questions/714877/setting-windows-powershell-path-variable
- https://ss64.com/ps/syntax-env.html

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS