PowerShell 獲取當前使用者
-
在 PowerShell 中使用
Win32_ComputerSystem
類獲取當前使用者 - 在 PowerShell 中使用環境變數獲取當前使用者
-
在 PowerShell 中使用
whoami
命令獲取當前使用者
使用 Windows 時,你幾乎肯定需要知道哪些使用者帳戶在某個時間主動登入到計算機。值得慶幸的是,PowerShell 可以獲取遠端或本地計算機上的當前使用者。
有許多方法可以在不使用 PowerShell 的情況下檢索登入到計算機的當前使用者。使用 PowerShell,你還可以通過將結果視為物件來更改結果。
例如,如果你執行詢問使用者憑據的指令碼,PowerShell 可以動態生成使用者名稱,而你只需要手動輸入密碼。
在 PowerShell 中使用 Win32_ComputerSystem
類獲取當前使用者
我們將使用 PowerShell cmdlet,即 Get-CimInstance
和 Get-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 在計算機上獲取當前使用者的另一種技術是從環境變數中檢索資訊。作業系統資料,例如當前使用者的使用者名稱,由環境變數表示。但是,使用環境變數主要有三種方式;無論採用何種方法,它都會得到相同的結果。
三種方式如下。
- 環境 PowerShell 驅動器
$env
變數- .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
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.