PowerShell 現在のユーザーを取得する
-
PowerShell で
Win32_ComputerSystem
クラスを使用して現在のユーザーを取得する - PowerShell で環境変数を使用して現在のユーザーを取得する
-
PowerShell で
whoami
コマンドを使用して現在のユーザーを取得する
Windows を使用する場合、ほぼ確実に、どのユーザーアカウントがいつかコンピューターにアクティブにサインインしているかを知る必要があります。ありがたいことに、PowerShell はリモートマシンまたはローカルマシンで現在のユーザーを取得できます。
PowerShell を使用せずにマシンにサインオンしている現在のユーザーを取得する方法はたくさんあります。PowerShell を使用すると、結果をオブジェクトとして扱うことで結果を変更することもできます。
たとえば、ユーザーの資格情報を要求するスクリプトを実行すると、PowerShell はユーザー名を動的に生成し、手動で入力するパスワードのみを残します。
PowerShell で Win32_ComputerSystem
クラスを使用して現在のユーザーを取得する
PowerShell コマンドレット、つまり Get-CimInstance
と Get-WMIObject
を使用します。これらを使用すると、リモートコンピューターまたはローカルコンピューターで WMI(Windows Management Instrumentation)クラスを使用して現在のユーザーを取得できます。PowerShell の Win32ComputerSystem クラスに対応する次のコマンドレットのいずれかを呼び出して、現在のユーザーを取得します。
Username
プロパティは、Win32ComputerSystem クラスの属性の 1つです。これを行うには、PowerShell を起動し、以下に示すコマンドを実行します。
Get-CimInstance:
(Get-CimInstance -ClassName Win32_ComputerSystem).Username
Get-WMIObject:
(Get-WMIObject -ClassName Win32_ComputerSystem).Username
出力:
DESKTOP-DelftStack\DefltStack
ここでは、両方のコマンドで同じ結果が得られます。ただし、上記のコマンドは、ユーザーが直接ログインしている場合にのみ結果を提供することに注意してください。リモートログインの場合、ユーザー名は空白になります。
PowerShell で環境変数を使用して現在のユーザーを取得する
PowerShell を使用してマシン上で現在のユーザーを取得する別の手法は、環境変数から情報を取得することです。現在のユーザーのユーザー名などの OS データは、環境変数で表されます。ただし、環境変数を操作する方法は主に 3つあります。どの方法でも同じ結果が得られます。
3つの方法は以下のとおりです。
- Env PowerShell ドライブ
$env
変数- .NET 環境クラス
上記の方法を以下にさらに説明する。
Env PowerShell ドライブ
環境変数は PowerShell によってキャッシュされ、PowerShell ドライブ(PSDrive)である Env:
ドライブを介して利用できるようになります。PSDrive は、コンピューター上のドライブ(C:など)のようにアクセスできるストレージの場所ですが、PowerShell を介してのみアクセスできます。
PowerShell セッションを開始すると、Env:
ドライブが自動的に作成されます。Env:
はドライブであるため、Get-ChildItem コマンドレットを使用してそのコンテンツにアクセスできます。これは、ファイルシステムフォルダーまたはドライブのアイテムの一覧表示と同様に機能します。
次のコマンドを使用して、ユーザーを取得できます。
Get-ChildItem Env:\USERNAME
出力
Name Value
---- -----
USERNAME DelftStack
値のみを取得するには、次のコマンドを使用できます。
(Get-ChildItem Env:\USERNAME).Value
出力:
DelftStack
コマンドがユーザー名の値を文字列として返すことがわかります。
$env
変数
もう 1つの方法は、env ドライブを変数として扱い、以下のコマンドを使用できるようにすることです。
$env:username
出力:
DelftStack
.NET 環境クラス
Environment クラスには、$ env 変数と同じ値(現在のユーザーのユーザー名)を持つ Username フィールドがあります。以下の PowerShell コマンドを実行して、username フィールドの値を取得します。
[System.Environment]::UserName
出力:
DelftStack
.NET WindowsIdentity クラス
Windows で現在のユーザーを取得するために実行するもう 1つのクラスは、WindowsIdentity クラスです。GetCurrentname
メソッドがあり、以下のように使用できます。
([System.Security.Principal.WindowsIdentity]::GetCurrent().Name).Split('\')[1]
出力:
DelftStack
PowerShell で whoami
コマンドを使用して現在のユーザーを取得する
whoami
コマンドは、%WINDIR%\System32
フォルダーにある実行可能ファイルであり、ファイルの名前は whoami.exe
です。以下のコマンドを実行すると、ドメイン/ユーザー名の形式のユーザー名になります。
whoami
出力:
DESKTOP-DelftStack\DefltStack
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.