在 PowerShell 中獲取本地主機名稱

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 在 PowerShell 中使用舊命令獲取本地主機名稱
  2. 在 PowerShell 中使用環境變數獲取 localhost 名稱
  3. 在 PowerShell 中使用 .NET Framework 庫獲取 Localhost 名稱
  4. 在 PowerShell 中使用 Windows Management Instrumentation 獲取 localhost 名稱
在 PowerShell 中獲取本地主機名稱

本地主機是一個技術術語,我們通常用來定義主機名,它指的是當前用於訪問它的裝置。因此,會出現我們需要查詢本地機器當前名稱的情況。

本文將介紹幾種使用 Windows PowerShell 獲取計算機 localhost 名稱的方法。

在 PowerShell 中使用舊命令獲取本地主機名稱

許多舊的命令提示符 (CMD) 命令在 Windows PowerShell 指令碼環境中工作。PowerShell 環境使用別名從舊環境中傳遞這些命令。

這方面的一個例子是命令 hostname。執行命令提示符時,命令 hostname 將返回本地計算機的名稱。

示例程式碼:

hostname

輸出:

WINDOWS-PC01

在 PowerShell 中使用環境變數獲取 localhost 名稱

獲取本地計算機的 localhost 名稱的另一種方法是在 PowerShell 中呼叫我們的一個環境變數。環境變數,由 Windows PowerShell 中的 Env: 描述,儲存作業系統環境和程式。

此資訊詳細資訊包括活動系統路徑、Windows 安裝目錄的位置、作業系統使用的程序數等等。

對於這種特定情況,我們可以使用環境變數 Env:COMPUTERNAME 來呼叫我們機器的本地主機名。

Get-Content Env:COMPUTERNAME

在上面的示例中,我們使用 Get-Content cmdlet 來獲取環境變數的值。我們可以通過將環境變數轉換為 Windows PowerShell 變數來簡化此操作。

$Env:COMPUTERNAME

上面的兩組程式碼應該產生相同的輸出,這將是你正在使用的當前機器的本地主機名稱。

在 PowerShell 中使用 .NET Framework 庫獲取 Localhost 名稱

在 Windows PowerShell 中,.NET Framework 的庫包含它自己的一組命令,我們可以在指令碼中呼叫這些命令。此外,.NET Framework 中的幾個命令在列印計算機的本地主機名稱方面實現了相同的目標。

[System.Net.Dns]::GetHostName()
[Environment]::MachineName

如果 Windows PowerShell 中有可用的本機命令,通常不鼓勵在生產環境中使用 .NET 框架庫,但我們可以為這個特定用例提供一個例外。

如果你加入了域,你的 DNS 名稱將比僅加入本地工作組的 localhost 機器名稱長得多。

因此,如果你的 DNS 名稱超過 15 個字元,則輸出值不會被截斷的 [System.Net.Dns]::GetHostName() 優於 $env:COMPUTERNAME,後者將修剪輸出.

在 PowerShell 中使用 Windows Management Instrumentation 獲取 localhost 名稱

Windows Management Instrumentation 或 WMI 是在基於 Windows 的作業系統上管理資料和操作的基礎結構。

WMI 最常用於基於 Windows 的應用程式中,並且在管理指令碼中最有用,包括基本功能,例如列印本地計算機的 localhost 名稱的值。

Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty Name

Get-WMIObject cmdlet 包含多個本地計算機資訊,例如計算機的製造商、域和型號。此外,僅通過管道將其匯出 Name 屬性將返回本地計算機的 localhost 名稱值。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn