PowerShell 獲取當前使用者

Migel Hewage Nimesha 2023年1月30日
  1. 在 PowerShell 中使用 Win32_ComputerSystem 類獲取當前使用者
  2. 在 PowerShell 中使用環境變數獲取當前使用者
  3. 在 PowerShell 中使用 whoami 命令獲取當前使用者
PowerShell 獲取當前使用者

使用 Windows 時,你幾乎肯定需要知道哪些使用者帳戶在某個時間主動登入到計算機。值得慶幸的是,PowerShell 可以獲取遠端或本地計算機上的當前使用者。

有許多方法可以在不使用 PowerShell 的情況下檢索登入到計算機的當前使用者。使用 PowerShell,你還可以通過將結果視為物件來更改結果。

例如,如果你執行詢問使用者憑據的指令碼,PowerShell 可以動態生成使用者名稱,而你只需要手動輸入密碼。

在 PowerShell 中使用 Win32_ComputerSystem 類獲取當前使用者

我們將使用 PowerShell cmdlet,即 Get-CimInstanceGet-WMIObject。這些允許我們通過在遠端或本地計算機上使用 WMI(Windows Management Instrumentation)類來獲取當前使用者。在 PowerShell 中呼叫以下任何定址 Win32 ComputerSystem 類的 cmdlet 以獲取當前使用者。

Username 屬性是 Win32 ComputerSystem 類的屬性之一。為此,請啟動 PowerShell 並執行如下所示的命令。

獲取 CimInstance:

(Get-CimInstance -ClassName Win32_ComputerSystem).Username

獲取 WMIObject:

(Get-WMIObject -ClassName Win32_ComputerSystem).Username

輸出:

DESKTOP-DelftStack\DefltStack

這裡兩個命令得到相同的結果。但需要注意的是,上述命令只在使用者直接登入時才會給出結果。如果是遠端登入,則使用者名稱將為空。

在 PowerShell 中使用環境變數獲取當前使用者

使用 PowerShell 在計算機上獲取當前使用者的另一種技術是從環境變數中檢索資訊。作業系統資料,例如當前使用者的使用者名稱,由環境變數表示。但是,使用環境變數主要有三種方式;無論採用何種方法,它都會得到相同的結果。

三種方式如下。

  1. 環境 PowerShell 驅動器
  2. $env 變數
  3. .NET 環境類

下面進一步解釋上述方法。

環境 PowerShell 驅動器

環境變數由 PowerShell 快取並通過 Env: 驅動器提供,該驅動器是 PowerShell 驅動器 (PSDrive)。PSDrive 是可以像計算機上的驅動器一樣訪問的儲存位置(例如 C:),但只能通過 PowerShell 訪問。

Env: 驅動器會在你啟動 PowerShell 會話時自動建立。因為 Env: 是一個驅動器,你可以使用 Get-ChildItem cmdlet 訪問其內容,其工作方式類似於列出檔案系統資料夾或驅動器的專案。

可以使用以下命令檢索使用者。

Get-ChildItem Env:\USERNAME

輸出

Name                           Value
----                           -----
USERNAME                       DelftStack

為了僅獲取值,可以使用以下命令。

(Get-ChildItem Env:\USERNAME).Value

輸出:

DelftStack

可以看出該命令將使用者名稱值作為字串返回。

$env 變數

另一種方法是將 env 驅動器視為一個變數,你可以在其中使用以下命令:

$env:username

輸出:

DelftStack

.NET 環境類

Environment 類確實有一個 Username 欄位,它與 $env 變數具有相同的值:當前使用者的使用者名稱。執行下面的 PowerShell 命令以獲取使用者名稱欄位的值。

[System.Environment]::UserName

輸出:

DelftStack

.NET WindowsIdentity 類

在 Windows 中執行以獲取當前使用者的另一個類是 WindowsIdentity 類。它具有 GetCurrentname 方法,可以使用如下所示。

([System.Security.Principal.WindowsIdentity]::GetCurrent().Name).Split('\')[1]

輸出:

DelftStack

在 PowerShell 中使用 whoami 命令獲取當前使用者

whoami 命令是一個可執行檔案,位於 %WINDIR%\System32 資料夾中,檔名為 whoami.exe。當我們執行以下命令時,它會生成域/使用者名稱格式的使用者名稱。

whoami

輸出:

DESKTOP-DelftStack\DefltStack
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

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.

相關文章 - PowerShell User