共用方式為


Get-WmiObject

取得 Windows Management Instrumentation (WMI) 類別的實例或可用類別的相關信息。

語法

Get-WmiObject
   [-Class] <String>
   [[-Property] <String[]>]
   [-Filter <String>]
   [-Amended]
   [-DirectRead]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [<CommonParameters>]
Get-WmiObject
   [[-Class] <String>]
   [-Recurse]
   [-Amended]
   [-List]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [<CommonParameters>]
Get-WmiObject
   [-Amended]
   [-DirectRead]
   -Query <String>
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [<CommonParameters>]
Get-WmiObject
   [-Amended]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [<CommonParameters>]
Get-WmiObject
   [-Amended]
   [-AsJob]
   [-Impersonation <ImpersonationLevel>]
   [-Authentication <AuthenticationLevel>]
   [-Locale <String>]
   [-EnableAllPrivileges]
   [-Authority <String>]
   [-Credential <PSCredential>]
   [-ThrottleLimit <Int32>]
   [-ComputerName <String[]>]
   [-Namespace <String>]
   [<CommonParameters>]

Description

從 PowerShell 3.0 開始,此 Cmdlet 已由 Get-CimInstance取代。

Get-WmiObject Cmdlet 會取得 WMI 類別的實例或可用 WMI 類別的相關信息。 若要指定遠端計算機,請使用 ComputerName 參數。 如果指定 List 參數,Cmdlet 會取得指定命名空間中可用 WMI 類別的相關信息。 如果指定 Query 參數,Cmdlet 會執行 WMI 查詢語言 (WQL) 語句。

Get-WmiObject Cmdlet 不會使用 Windows PowerShell 遠端來執行遠端作業。 即使您的電腦不符合 Windows PowerShell 遠端處理的需求,或未設定遠端處理,您也可以使用 Get-WmiObject Cmdlet 的 ComputerName 參數。

從 Windows PowerShell 3.0 開始,Get-WmiObject 傳回之物件的 __Server 屬性具有 PSComputerName 別名。 這可讓您更輕鬆地在輸出和報表中包含來源計算機名稱。

範例

範例 1:取得本機計算機上的進程

此範例會取得本機電腦上的進程。

Get-WmiObject -Class Win32_Process

範例 2:取得遠端電腦上的服務

這個範例會取得遠端電腦上的服務。 ComputerName 參數會指定遠端電腦的 IP 位址。 根據預設,目前的用戶帳戶必須是遠端計算機上 Administrators 群組的成員。

Get-WmiObject -Class Win32_Service -ComputerName 10.1.4.62

範例 3:取得本機計算機根或預設命名空間中的 WMI 類別

這個範例會取得本機計算機根或預設命名空間中的 WMI 類別。

Get-WmiObject -Namespace "root/default" -List

範例 4:在多部計算機上取得具名服務

這個範例會取得計算機上由 ComputerName 參數的值所指定的 WinRM 服務。

Get-WmiObject -Query "select * from win32_service where name='WinRM'" -ComputerName Server01, Server02 |
  Format-List -Property PSComputerName, Name, ExitCode, Name, ProcessID, StartMode, State, Status

PSComputerName : SERVER01
Name           : WinRM
ExitCode       : 0
Name           : WinRM
ProcessID      : 844
StartMode      : Auto
State          : Running
Status         : OK

PSComputerName : SERVER02
Name           : WinRM
ExitCode       : 0
Name           : WinRM
ProcessID      : 932
StartMode      : Auto
State          : Running
Status         : OK

管線運算符 (|) 會將輸出傳送至 Format-List Cmdlet,此 Cmdlet 會將 PSComputerName 属性新增至默認輸出。 PSComputerNameGet-WmiObject 傳回之物件的 __Server 屬性別名。 此別名是在 PowerShell 3.0 中引進的。

範例 5:停止遠端電腦上的服務

此範例會停止遠端電腦上的WinRM服務。 Get-WmiObject 會取得 Server01 上 WinRM 服務對象的實例。 然後,它會叫用該物件上 Win32_Service WMI 類別的 StopService 方法。

(Get-WmiObject -Class Win32_Service -Filter "name='WinRM'" -ComputerName Server01).StopService()

這相當於使用 Stop-Service Cmdlet。

範例 6:取得本機電腦上的 BIOS

此範例會從本機計算機取得 BIOS 資訊。 Format-List Cmdlet 的 Property 參數是用來在清單中顯示傳回之物件的所有屬性。 根據預設,只會顯示 Types.ps1xml 組態檔中定義的屬性子集。

Get-WmiObject -Class Win32_Bios | Format-List -Property *

Status                : OK
Name                  : Phoenix ROM BIOS PLUS Version 1.10 A05
Caption               : Phoenix ROM BIOS PLUS Version 1.10 A05
SMBIOSPresent         : True
__GENUS               : 2
__CLASS               : Win32_BIOS
__SUPERCLASS          : CIM_BIOSElement
__DYNASTY             : CIM_ManagedSystemElement
__RELPATH             : Win32_BIOS.Name="Phoenix ROM BIOS PLUS Version 1.10
__PROPERTY_COUNT      : 27
__DERIVATION          : {CIM_BIOSElement, CIM_SoftwareElement, CIM_LogicalElement,
__SERVER              : Server01
__NAMESPACE           : root\cimv2
__PATH                : \\SERVER01\root\cimv2:Win32_BIOS.Name="Phoenix ROM BIOS
BiosCharacteristics   : {7, 9, 10, 11...}
BIOSVersion           : {DELL   - 15, Phoenix ROM BIOS PLUS Version 1.10 A05}
BuildNumber           :
CodeSet               :
CurrentLanguage       : en|US|iso8859-1
Description           : Phoenix ROM BIOS PLUS Version 1.10 A05
IdentificationCode    :
InstallableLanguages  : 1
InstallDate           :
LanguageEdition       :
ListOfLanguages       : {en|US|iso8859-1}
Manufacturer          : Dell Inc.
OtherTargetOS         :
PrimaryBIOS           : True
ReleaseDate           : 20101103000000.000000+000
SerialNumber          : 8VDM9P1
SMBIOSBIOSVersion     : A05
SMBIOSMajorVersion    : 2
SMBIOSMinorVersion    : 6
SoftwareElementID     : Phoenix ROM BIOS PLUS Version 1.10 A05
SoftwareElementState  : 3
TargetOperatingSystem : 0
Version               : DELL   - 15
Scope                 : System.Management.ManagementScope
Path                  : \\SERVER01\root\cimv2:Win32_BIOS.Name="Phoenix ROM BIOS
Options               : System.Management.ObjectGetOptions
ClassPath             : \\JUNE-PC\root\cimv2:Win32_BIOS
Properties            : {BiosCharacteristics, BIOSVersion, BuildNumber, Caption...}
SystemProperties      : {__GENUS, __CLASS, __SUPERCLASS, __DYNASTY...}
Qualifiers            : {dynamic, Locale, provider, UUID}
Site                  :
Container             :

範例 7:取得遠端電腦上的服務

這個範例會使用 Get-WmiObject Cmdlet 的 Credential 參數來取得遠端電腦上的服務。 Credential 參數的值是用戶帳戶名稱。 系統會提示使用者輸入密碼。

Get-WmiObject Win32_Service -Credential FABRIKAM\administrator -ComputerName Fabrikam

注意

以本機計算機為目標時,無法使用認證。

參數

-Amended

取得或設定值,這個值表示從WMI傳回的物件是否應該包含修訂的資訊。 一般而言,修改的資訊是可當地語系化的資訊,例如附加至 WMI 物件的物件和屬性描述。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-AsJob

以背景工作身分執行 命令。 使用此參數來執行需要很長的時間才能完成的命令。

當您使用 AsJob 參數時,命令會傳回代表背景工作的物件,然後顯示命令提示字元。 您可以在作業完成時繼續在工作階段中工作。 如果在遠端電腦上使用 Get-WmiObject,則會在本機電腦上建立作業,而且遠端電腦的結果會自動傳回至本機計算機。 若要管理作業,請使用包含 Job Cmdlet 的 Cmdlet。 若要取得作業結果,請使用 Receive-Job Cmdlet。

注意

若要搭配遠端電腦使用此參數,必須將本機和遠端電腦設定為遠端處理。 此外,您必須在 Windows Vista 和更新版本的 Windows 中使用 [以系統管理員身分執行] 選項來啟動 Windows PowerShell。 如需詳細資訊,請參閱 about_Remote_Requirements

如需 Windows PowerShell 背景工作的詳細資訊,請參閱 about_Jobsabout_Remote_Jobs

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Authentication

指定要與 WMI 連線搭配使用的驗證層級。 有效值為:

  • -1: 未變更
  • 0:預設值
  • 1:無 (未執行驗證。
  • 2:只有在用戶端與應用程式建立關聯性時,才會執行驗證。
  • 3:呼叫 (只有在應用程式收到要求時,每個呼叫的開頭才會執行驗證。
  • 4:封包(驗證會針對從用戶端接收的所有數據執行。
  • 5:PacketIntegrity (用戶端與應用程式之間傳輸的所有數據都會經過驗證和驗證。
  • 6:PacketPrivacy (會使用其他驗證層級的屬性,並加密所有數據。
類型:AuthenticationLevel
接受的值:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Authority

指定要用來驗證 WMI 連線的授權單位。 您可以指定標準 NTLM 或 Kerberos 驗證。 若要使用 NTLM,請將授權單位設定設為 ntlmdomain:<DomainName>,其中 <DomainName> 識別有效的 NTLM 功能變數名稱。 若要使用 Kerberos,請指定 kerberos:<DomainName>\<ServerName>。 當您連線到本機計算機時,無法包含授權單位設定。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Class

指定 WMI 類別的名稱。 使用此參數時,Cmdlet 會擷取 WMI 類別的實例。

類型:String
別名:ClassName
Position:1
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ComputerName

指定管理作業的目標計算機。 輸入完整功能變數名稱 (FQDN)、NetBIOS 名稱或IP位址。 當遠端電腦位於與本機計算機不同的網域時,需要完整功能變數名稱。

預設值為本機計算機。 若要指定本機計算機,例如在計算機名稱清單中,請使用 「localhost」、本機電腦名稱或點 (.)。

此參數不依賴使用 WS-Management 的 Windows PowerShell 遠端處理。 即使您的電腦未設定為 WS-Management 執行遠端命令,您也可以使用 Get-WmiObjectComputerName 參數。

類型:String[]
別名:Cn
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Credential

指定具有執行此動作許可權的用戶帳戶。 預設值為目前的使用者。 輸入使用者名稱,例如 「User01」 、“ Domain01\User01” 或 User@Contoso.com。 或者,輸入 PSCredential 物件,例如 Get-Credential Cmdlet 所傳回的物件。 當您輸入使用者名稱時,系統會提示您輸入密碼。 以本機計算機為目標時,無法使用認證。

類型:PSCredential
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-DirectRead

指定是否針對指定的類別要求直接存取 WMI 提供者,而不考慮其基類或其衍生類別。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-EnableAllPrivileges

在命令進行 WMI 呼叫之前,啟用目前使用者的所有許可權。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Filter

指定 Where 子句做為篩選。 使用 WMI 查詢語言 (WQL) 的語法。

重要

請勿在 參數的值中包含 Where 關鍵詞。 例如,下列命令只會傳回具有 『c:』 DeviceID 的邏輯磁碟,以及名稱為 『WinRM』 的服務,而不使用 Where 關鍵詞。

Get-WmiObject Win32_LogicalDisk -filter "DeviceID = 'c:' "

Get-WmiObject win32_service -filter "name='WinRM'"

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Impersonation

指定要使用的模擬層級。

此參數可接受的值為:

  • 0:預設值。 讀取預設模擬層級的本機登錄。 預設值通常會設定為 Impersonate
  • 1:匿名。 隱藏呼叫端的認證。
  • 2:識別。 允許物件查詢呼叫端的認證。
  • 3:模擬。 允許物件使用呼叫端的認證。
  • 4:委派。 允許物件允許其他物件使用呼叫端的認證。
類型:ImpersonationLevel
接受的值:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-List

取得 WMI 存放庫命名空間中 WMI 類別的名稱,該命名空間是由 Namespace 參數所指定。

如果您指定 List 參數,但不是 Namespace 參數,Get-WmiObject 預設會使用 Root\Cimv2 命名空間。 此 Cmdlet 不會在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting 登錄機碼中使用 預設命名空間 登錄項目來判斷預設命名空間。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Locale

指定 WMI 物件的慣用地區設定。 以 LCID> 格式MS_<输入值。

類型:String
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Namespace

搭配 Class 參數使用時,Namespace 參數會指定指定指定 WMI 類別所在的 WMI 存放庫命名空間。 搭配 List 參數使用時,它會指定要從中收集 WMI 類別資訊的命名空間。

類型:String
別名:NS
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Property

指定此 Cmdlet 從中取得資訊的 WMI 類別屬性。 輸入屬性名稱。

類型:String[]
Position:1
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-Query

執行指定的 WMI 查詢語言 (WQL) 語句。 此參數不支援事件查詢。

類型:String
Position:Named
預設值:None
必要:True
接受管線輸入:False
接受萬用字元:False

-Recurse

搜尋目前命名空間和所有其他命名空間中 Class 參數所指定的類別名稱。

類型:SwitchParameter
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

-ThrottleLimit

指定可以同時執行的 WMI 作業數目上限。 只有當命令中使用 AsJob 參數時,此參數才有效。

類型:Int32
Position:Named
預設值:None
必要:False
接受管線輸入:False
接受萬用字元:False

輸入

None

您無法使用管線將輸入傳送至 Get-WmiObject

輸出

PSObject or System.Management.Automation.RemotingJob

當您使用 AsJob 參數時,Cmdlet 會傳回作業物件。 否則,Get-WmiObject 傳回的對象取決於 Class 參數的值。

備註

若要存取遠端電腦上的 WMI 資訊,Cmdlet 必須在遠端電腦上本機系統管理員群組成員的帳戶下執行。 或者,可以變更遠端存放庫 WMI 命名空間上的預設存取控制,以授與其他帳戶的訪問許可權。

預設只會顯示每個 WMI 類別的某些屬性。 Types.ps1xml 組態檔中會指定每個 WMI 類別所顯示的屬性集。 若要取得 WMI 物件的所有屬性,請使用 Get-MemberFormat-List Cmdlet。