PowershellでOS のユーザ名を変数として取得する方法をまとめました。
powershellスクリプトを作成する際に実行環境ごとに異なるユーザ名の指定が必要な場合などに利用できるかと思います。
1.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
このようにすると環境ごとにスクリプトを変更する必要はなくなります。
2.ユーザーのプロファイル情報を取得する
上記ではユーザ名だけを取得して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
3.その他取得可能な変数
上記以外にも環境変数から変数に取得することができます。
コンピュータ名
コンピュータ名も取得可能です。
PS C:\> $PCName = $env:COMPUTERNAME
PS C:\> $PCName
TESTPC
ただ、コンピュータ名については「hostname」を利用したほうが早いかと思います。
PS C:\> hostname
TESTPC
ドメイン名
ドメイン名も取得可能です。
特定のドメインに所属していない場合には、コンピュータ名が出力されます。
PS C:\> $DomainName = $env:COMPUTERNAME
PS C:\> $DomainName
TESTTPC