【Powershell】環境変数からOSユーザー名を変数として取得する

Powershell Powershell

PowershellでOS のユーザー名を変数として取得する方法をまとめてみました。

広告

OSのユーザー名のみを変数として取得する

$env を利用して環境変数から情報を取得することが可能です。

$UserName = $env:UserName

実行例

powershellを実行しているユーザー名が取得されていることを確認できます。

PS C:\> $UserName = $env:UserName
PS C:\> $UserName
hogeuser
PS C:\>

活用例:実行ユーザーを変更してもPowershellコマンドを変更しなくてよい

デスクトップ上のファイルなどのPathを指定してスクリプトを動かしたい場合には、どうしてもユーザー名の指定が必要となってきます。

このときユーザー名が同じであればスクリプト内にユーザー名をハードコードしてもいいですが、異なる環境で実行、すなわちユーザー名が変更となった場合にはスクリプト内の修正が必要です。

実行環境の移行など、ユーザー名が変わる可能性がある場合には環境変数からOSユーザー名を取得すると、スクリプト内のPathを変更する必要がないため便利です。

以下はPathの値の中にOSユーザーを変数として組み込んで利用している例です。

PS C:\> $UserName = $env:UserName
PS C:\> $Path = "C:\Users\$UserName\Desktop\hoge.txt"
PS C:\> $Path
C:\Users\hogeuser\Desktop\hoge.txt

このようにすると環境ごとにスクリプトを変更する必要はなくなります。

[参考] ユーザーのプロファイル情報を取得する

上記ではユーザー名だけを取得してPathの中に含めることをしましたが、「$env:USERPROFILE」ではユーザーのプロファイル情報(=ユーザのホームディレクトリのパス)も取得可能です。

$UserProfile = $env:USERPROFILE

実際に実行してみる

Powershellを実行しているユーザー名が取得されていることを確認できます。

PS C:\> $UserProfile = $env:USERPROFILE
PS C:\> $UserProfile
C:\Users\hogeuser
PS C:\>

また、上記でも取得していた「C:\Users\hogeuser\Desktop\hoge.txt」というPathを「$env:USERPROFILE」を用いて以下のように取得することもできます

PS C:\> $UserProfile = $env:USERPROFILE
PS C:\> $Path = "$UserProfile\Desktop\hoge.txt"
PS C:\> $Path
C:\Users\hogeuser\Desktop\hoge.txt

[参考] その他取得可能な変数

上記以外にも環境変数から変数に取得することができます。

コンピュータ名

コンピュータ名も取得可能です。

PS C:\> $PCName = $env:COMPUTERNAME
PS C:\> $PCName
TESTPC

ただ、コンピュータ名については「hostname」を利用したほうが早いかと思います。

PS C:\> hostname
TESTPC

ドメイン名

ドメイン名も取得可能です。
特定のドメインに所属していない場合には、コンピュータ名が出力されます。

PS C:\> $DomainName = $env:COMPUTERNAME
PS C:\> $DomainName
TESTTPC
タイトルとURLをコピーしました