Get-WmiObject

Ottiene le istanze di classi di Strumentazione gestione Windows (WMI) o informazioni sulle classi disponibili.

Sintassi

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>]

Descrizione

A partire da PowerShell 3.0, questo cmdlet è stato sostituito da Get-CimInstance.

Il Get-WmiObject cmdlet ottiene istanze di classi WMI o informazioni sulle classi WMI disponibili. Per specificare un computer remoto, utilizzare il parametro ComputerName . Se si specifica il parametro List , il cmdlet ottiene informazioni sulle classi WMI disponibili in uno spazio dei nomi specificato. Se si specifica il parametro Query , il cmdlet esegue un'istruzione WQL (WMI Query Language).

Il Get-WmiObject cmdlet non usa la comunicazione remota di Windows PowerShell per eseguire operazioni remote. È possibile usare il parametro ComputerName del Get-WmiObject cmdlet anche se il computer non soddisfa i requisiti per la comunicazione remota di Windows PowerShell o non è configurato per la comunicazione remota in Windows PowerShell.

A partire da Windows PowerShell 3.0, la proprietà __Server dell'oggetto restituito Get-WmiObject ha un alias PSComputerName. Questo rende più semplice includere il nome del computer di origine nell'output e nei rapporti.

Esempio

Esempio 1: Ottenere processi nel computer locale

In questo esempio vengono visualizzati i processi nel computer locale.

Get-WmiObject -Class Win32_Process

Esempio 2: Ottiene i servizi in un computer remoto

Questo esempio ottiene i servizi in un computer remoto. Il parametro ComputerName specifica l'indirizzo IP di un computer remoto. Per impostazione predefinita, l'account utente corrente deve essere membro del gruppo Amministrazione istrators nel computer remoto.

Get-WmiObject -Class Win32_Service -ComputerName 10.1.4.62

Esempio 3: Ottenere classi WMI nello spazio dei nomi radice o predefinito del computer locale

In questo esempio vengono recuperate le classi WMI nello spazio dei nomi radice o predefinito del computer locale.

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

Esempio 4: Ottenere un servizio denominato in più computer

Questo esempio ottiene il servizio WinRM nei computer specificati dal valore del parametro ComputerName .

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

Un operatore pipeline (|) invia l'output al Format-List cmdlet , che aggiunge la proprietà PSComputerName all'output predefinito. PSComputerName è un alias della proprietà __Server degli oggetti restituiti Get-WmiObject . Questo alias è stato introdotto in PowerShell 3.0.

Esempio 5: Arrestare un servizio in un computer remoto

Questo esempio arresta il servizio WinRM in un computer remoto. Get-WmiObject ottiene l'istanza dell'oggetto servizio WinRM in Server01. Richiama quindi il metodo StopService della classe WMI Win32_Service su tale oggetto.

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

Equivale a usare il Stop-Service cmdlet .

Esempio 6: Ottenere il BIOS nel computer locale

In questo esempio vengono ottenute le informazioni del BIOS dal computer locale. Il parametro Property del Format-List cmdlet viene utilizzato per visualizzare tutte le proprietà dell'oggetto restituito in un elenco. Per impostazione predefinita, vengono visualizzati solo il subset di proprietà definite nel Types.ps1xml file di configurazione.

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             :

Esempio 7: Ottenere i servizi in un computer remoto

In questo esempio viene usato il parametro Credential del Get-WmiObject cmdlet per ottenere i servizi in un computer remoto. Il valore del parametro Credential è un nome account utente. All'utente viene richiesta una password.

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

Nota

Non è possibile usare le credenziali quando si fa riferimento al computer locale.

Parametri

-Amended

Ottiene o imposta un valore che indica se gli oggetti restituiti da WMI devono contenere informazioni modificate. In genere, le informazioni modificate sono informazioni localizzabili, ad esempio le descrizioni di oggetti e proprietà, associate all'oggetto WMI.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-AsJob

Esegue il comando come processo in background. Usare questo parametro per eseguire comandi il cui completamento richiede molto tempo.

Quando si usa il parametro AsJob , il comando restituisce un oggetto che rappresenta il processo in background e quindi visualizza il prompt dei comandi. È possibile continuare a lavorare nella sessione mentre il processo viene completato. Se Get-WmiObject viene utilizzato con il parametro ComputerName , il processo viene creato nel computer locale e i risultati dei computer remoti vengono restituiti automaticamente al computer locale. Per gestire il processo, usare i cmdlet che contengono il Job sostantivo . Per ottenere i risultati del processo, usare il Receive-Job cmdlet .

Per altre informazioni sui processi in background di Windows PowerShell, vedere about_Jobs e about_Remote_Jobs.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

Specifica il livello di autenticazione da usare con la connessione WMI. I valori validi sono:

  • -1: non modificato
  • 0: impostazione predefinita
  • 1: nessuno (nessuna autenticazione eseguita).
  • 2: Connessione (l'autenticazione viene eseguita solo quando il client stabilisce una relazione con l'applicazione).
  • 3: chiamata (l'autenticazione viene eseguita solo all'inizio di ogni chiamata quando l'applicazione riceve la richiesta).
  • 4: il pacchetto (l'autenticazione viene eseguita su tutti i dati ricevuti dal client).
  • 5: PacketIntegrity (tutti i dati trasferiti tra il client e l'applicazione vengono autenticati e verificati).
  • 6: PacketPrivacy (vengono usate le proprietà degli altri livelli di autenticazione e tutti i dati vengono crittografati).
Type:AuthenticationLevel
Accepted values:Default, None, Connect, Call, Packet, PacketIntegrity, PacketPrivacy, Unchanged
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authority

Specifica l'autorità da usare per autenticare la connessione WMI. È possibile specificare l'autenticazione NTLM standard o Kerberos. Per usare NTLM, impostare l'impostazione dell'autorità su ntlmdomain:<DomainName>, dove <DomainName> identifica un nome di dominio NTLM valido. Per usare Kerberos, specificare kerberos:<DomainName>\<ServerName>. Non è possibile includere l'impostazione dell'autorità quando ci si connette al computer locale.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Class

Specifica il nome di una classe WMI. Quando si usa questo parametro, il cmdlet recupera le istanze della classe WMI.

Type:String
Aliases:ClassName
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ComputerName

Specifica il computer di destinazione per l'operazione di gestione. Immettere un nome di dominio completo (FQDN), un nome NetBIOS o un indirizzo IP. Quando il computer è in un dominio diverso rispetto computer locale, il nome di dominio completo è obbligatorio.

Il valore predefinito è il computer locale. Per specificare il computer locale, ad esempio in un elenco di nomi di computer, usare localhost, il nome del computer locale o un punto (.).

Quando si specifica un computer remoto, l'account corrente o quello specificato con il parametro Credential deve disporre delle autorizzazioni appropriate per accedere alle informazioni.

Questo parametro non si basa sulla comunicazione remota di Windows PowerShell che usa WS-Management. È possibile utilizzare il parametro ComputerName di Get-WmiObject anche se il computer non è configurato per eseguire i comandi remoti WS-Management.

Type:String[]
Aliases:Cn
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

Specifica un account utente che dispone delle autorizzazioni per eseguire questa azione. Il valore predefinito è l'utente corrente. Digitare un nome utente, ad esempio User01, Domain01\User01o User@Contoso.com. In alternativa, immettere un oggetto PSCredential , ad esempio un oggetto restituito dal Get-Credential cmdlet . Quando si digita un nome utente, viene richiesta una password. Non è possibile usare le credenziali quando si fa riferimento al computer locale.

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DirectRead

Specifica se è richiesto l'accesso diretto al provider WMI per la classe specificata, indipendentemente dalla relativa classe base o le relative classi derivate.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-EnableAllPrivileges

Abilita tutti i privilegi dell'utente corrente prima che il comando effettui la chiamata a WMI.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Filter

Specifica una clausola Where da utilizzare come filtro. Usa la sintassi di WMI Query Language (WQL).

Importante

Non includere la parola chiave Where nel valore del parametro . Ad esempio, i comandi seguenti restituiscono solo i dischi logici con deviceID di c: e i servizi con il nome "WinRM" senza usare la parola chiave Where.

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

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

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Impersonation

Specifica il livello di rappresentazione da usare.

I valori validi per questo parametro sono:

  • 0: impostazione predefinita. Legge il Registro di sistema locale per il livello di rappresentazione predefinito. Il valore predefinito è in genere impostato su Impersonate.
  • 1: anonimo. Nasconde le credenziali del chiamante.
  • 2: identificazione. Consente agli oggetti di eseguire query sulle credenziali del chiamante.
  • 3: rappresenta. Consente agli oggetti di usare le credenziali del chiamante.
  • 4: delegato. Consente agli oggetti di permettere ad altri oggetti di usare le credenziali del chiamante.
Type:ImpersonationLevel
Accepted values:Default, Anonymous, Identify, Impersonate, Delegate
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-List

Ottiene i nomi delle classi WMI nello spazio dei nomi del repository WMI specificato dal parametro Namespace .

Se si specifica il parametro List , ma non il parametro Namespace , Get-WmiObject usa lo spazio dei nomi Root\Cimv2 per impostazione predefinita. Questo cmdlet non usa la voce del Registro di sistema Spazio dei nomi predefinito nella chiave del HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\Scripting Registro di sistema per determinare lo spazio dei nomi predefinito.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Locale

Specifica le impostazioni locali preferite per gli oggetti WMI. Immettere un valore in MS_<LCID> formato.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Namespace

Se usato con il parametro Class , il parametro Namespace specifica lo spazio dei nomi del repository WMI in cui si trova la classe WMI specificata. Se usato con il parametro List , specifica lo spazio dei nomi da cui raccogliere informazioni sulla classe WMI.

Type:String
Aliases:NS
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Property

Specifica le proprietà della classe WMI ottenute da questo cmdlet. Immettere i nomi delle proprietà.

Type:String[]
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Query

Esegue l'istruzione WMI Query Language (WQL) specificata Questo parametro non supporta le query eventi.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-Recurse

Cerca nello spazio dei nomi corrente e in tutti gli altri spazi dei nomi il nome della classe specificato dal parametro Class .

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ThrottleLimit

Specifica il numero massimo di operazioni WMI che possono essere eseguite contemporaneamente. Questo parametro è valido solo quando il parametro AsJob viene usato nel comando .

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Input

None

Non è possibile inviare tramite pipe l'input a Get-WmiObject.

Output

PSObject or System.Management.Automation.RemotingJob

Quando si usa il parametro AsJob , il cmdlet restituisce un oggetto processo. In caso contrario, l'oggetto restituito Get-WmiObject dipende dal valore del parametro Class .

Note

Windows PowerShell include gli alias seguenti per Get-WmiObject:

  • gwmi

Per accedere alle informazioni relative a WMI in un computer remoto, il cmdlet deve essere eseguito con un account membro del gruppo Administrators locale nel computer remoto. In alternativa, il controllo di accesso predefinito allo spazio dei nomi WMI del repository remoto può essere modificato per concedere diritti di accesso ad altri account.

Solo alcune delle proprietà di ogni classe WMI vengono visualizzate per impostazione predefinita. Il set di proprietà visualizzate per ogni classe WMI viene specificato nel Types.ps1xml file di configurazione. Per ottenere tutte le proprietà di un oggetto WMI, usare i Get-Member cmdlet o Format-List .