ご存じの通り、PowerShellはWindowsの強力なコマンドラインシェル・スクリプト環境ツールです。PowerShellは、ディレクトリの変更、ユーザーグループのメンバーシップの取得、ファイルのコピー、SSHのインストール、.exeファイルの実行など、さまざまな作業に利用できます。
しかし、多くのユーザーはもちろんのこと、経験豊富なベテランでさえもPowerShellコマンドレットの使い方をよく存じていません。PowerShellでログイン中のユーザーを取得するにはどうすれば良いでしょうか?stackoverflow.comフォーラムには、このような実例が投稿されています。
Windows 10にログインしているユーザー名を知りたいです。Windows PowerShellで現在のユーザー名を取得するにはどうすれば良いですか?助けて下さい。https://stackoverflow.com/questions/2085744/how-do-i-get-the-current-username-in-windows-powershell
PowerShellで現在のユーザー名を取得するために使用できるコマンド
まず、Windows 10/11でログイン中のユーザーを取得するためのコマンドについて知っておきましょう。フォーラムや投稿を調査した結果、Windows 11/10/8/7のPowerShellで現在のユーザー名を取得する方法がたくさんあることが判明したので、次のようにまとめました。
- Windows環境変数: 環境変数を操作するコマンドレットには、Env PowerShellドライブ、$env変数、.NET環境クラスの3種類があります。
- Win32_ComputerSystemクラス: このクラスでは、Get-WMIObjectやGet-CimInstanceコマンドレットを使用してユーザー名を取得できます。
- .NET WindowsIdentityクラス: GetCurrentNameコマンドレットを使用して、Windowsの現在のユーザー名を取得します。
- Whoamiコマンド: System32フォルダ内でユーザー名を見つけるために使用できる実行可能ファイルです。
- Queryコマンド: リモートデスクトッププロトコルを介して、リモートコンピューターでログオン中のすべてのユーザー名を一覧表示するために使用します。
これで、PowerShellでユーザー名を取得するコマンドレットについて一通りご理解いただけたかと思います。では、これらのコマンドレットを実行する方法を見ていきましょう。
Windows 11/10/8/7のPowerShellで現在のユーザー名を取得する方法
上記の情報に基づいて、Windows 11/10/8/7のPowerShellでユーザー名を取得するために実行できる方法を5つまとめました。好きなものを1つ選んで下さい。
#1.環境変数クラスで現在のユーザー名を取得する
Windows環境変数は、次の3つの方法でシステムからユーザー名とログインユーザーを検出します。
方法1: Env PowerShellドライブを使用する
- 検索ボックスに「PowerShell」と入力し、「Windows PowerShell」を右クリックして「管理者として実行」を選択します。次に、「はい」をクリックして確定します。
- 次のコマンドを入力してEnterを押すと、現在ログオン中のユーザー名が表示されます。
Get-ChildItem Env:USERNAME
または
(Get-ChildItem Env:USERNAME).Value(文字列としてユーザー名の値のみを返す)
方法2: $Env変数を使用する
$Env変数も、PowerShellでユーザー名を取得できる簡単な方法です。それには、PowerShellで「$env:username」コマンドを実行するだけです。
方法3: .NET環境クラスを使用する
$env変数と同様に、.NET環境クラスを使用することでも現在のユーザー名の値を見つけることができます。最後にログインしたすべてのユーザーを取得するには、PowerShellで以下のコマンドを実行します。
[System.Environment]::UserName
環境クラスでGetEnvironmentVariableコマンドレットを使用することでも、現在のユーザー名を取得できます。
[System.Environment]::GetEnvironmentVariable(‘username’)
#2.Win32_ComputerSystemクラスで現在のユーザー名を取得する
Win32_ComputerSystemクラスでは、Get-WMIObjectコマンドレットやGet-CimInstanceコマンドレットを使ってログオンしているユーザーを取得します。これらのコマンドレットは、Windows Management Instrumentationを通じて、ローカルコンピューターやリモートコンピューターのユーザー名に関する情報を取得するのに役立ちます。
ローカルコンピューターで現在のドメインとユーザー名を取得するには、PowerShellウィンドウを開き、以下のコマンドを実行します。
(Get-WMIObject -ClassName Win32_ComputerSystem).Username
または
(Get-CimInstance -ClassName Win32_ComputerSystem).Username
現在のユーザー名のみをドメインなしで取得したい場合は、split()パラメータを使用します。
((Get-WMIObject -ClassName Win32_ComputerSystem).Username).Split(“)[1]
#3..NET WindowsIdentityクラスで現在のユーザー名を取得する
.NET WindowsIdentityクラスは、GetCurrentNameコマンドレットでユーザー名を取得します。それには、PowerShellで次のコマンドを実行するだけです。
[System.Security.Principal.WindowsIdentity]::GetCurrent()
ユーザー名の値だけを取得するには、Split(‘\’)パラメータを使用します。
([System.Security.Principal.WindowsIdentity]::GetCurrent().Name).Split(‘\’) [1]
#4.Whoamiコマンドで現在のユーザー名を取得する
単にwhoamiコマンドを実行するだけでも、現在のユーザー名とドメインを取得できます。ユーザー名のみを取得するには、 (whoami).Split(‘\’)[1]コマンドを実行します。
#5.Queryコマンドで現在のユーザー名を取得する
管理者やドメインユーザーは、リモートコンピューターでログオン中のユーザー名を取得できます。例えば、PC1という名前のコンピューターにログオンしているすべてのユーザーを取得するには、PowerShellでqwinsta /server:pc1コマンドを実行します。現在のログオンセッションに存在するすべてのユーザーを表示するには、quser /server:pc1コマンドを実行します。
関連情報: Windowsのファイルシステムが破損したり、ディスクの空き容量が足りなくなったりしても、心配はいりません。MiniTool Partition Wizardは、ファイルシステムエラーのチェック、パーティションの拡張・サイズ変更、ディスク容量の分析、大容量ハードディスクへのアップグレードなどにより、このような問題を簡単に解決できます。