2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PowerShellで環境変数Pathにパスを操作する

Posted at

What's?

タイトルどおりですが、とてもとてもよく忘れるのでメモということで。

環境

PS C:\Users\xxxxx> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  4046


PowerShellで環境変数Pathにアクセスする

まず、PowerShellの環境変数に関するドキュメントはこちら。

PowerShellで環境変数を扱うには、3つの方法が用意されているようです。

  • 変数の構文
    • $Env:<variable-name>
  • 環境プロバイダーと項目コマンドレット
    • Copy-ItemSet-ItemGet-ItemRemove-Item
  • NET System.Environment クラス
    • [Environment]::SetEnvironmentVariable[Environment]::GetEnvironmentVariable

今回は変数の構文($Env:<variable-name>)を使っていこうとおもいます。

環境変数Pathの内容を表示する

PS C:\Users\xxxxx> $Env:Path
<環境変数Pathの内容>

環境変数Pathにパスを追加する

末尾に追加。

PS C:\Users\xxxxx> $Env:Path+=";<追加したいパス>"

先頭に追加。

PS C:\Users\xxxxx> $Env:Path="<追加したいパス>;"+$Env:Path

内容自体を変えたい場合は、まるっと差し替えたらいいかなと…。

PS C:\Users\xxxxx> $Env:Path="<パスごとに;で区切った内容>"

他の方法を使ってハマったこと

こちらのドキュメントに書かれているのですが、Windowsの環境変数には3つのスコープがあります。

  • マシン (またはシステム) のスコープ
  • ユーザー スコープ
  • プロセスのスコープ

System.Environmentクラス以外の方法で環境変数Pathを見るとマシンスコープとユーザースコープが足されたものが表示されるのですが、System.Environmentクラスで見るとそれぞれ独立して表示されます。

# マシンスコープ
PS C:\Users\xxxxx> [Environment]::GetEnvironmentVariable("Path","Machine")

# ユーザースコープ
PS C:\Users\xxxxx> [Environment]::GetEnvironmentVariable("Path","User")

なので、こちらの値を元にPathを組み立てる場合は片方のスコープしか見ていないとPathの内容が欠落する…みたいなことになります。

このあたりを残しておきたかったのが、今回の内容を書いたきっかけですね。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?