Get-WmiObject è il cmdlet più importante per le attività generali di gestione del sistema. Tutte le impostazioni critiche dei sottosistemi vengono esposte tramite WMI. WMI considera inoltre i dati come oggetti inclusi in insiemi composti da uno o più elementi. Poiché Windows PowerShell può essere utilizzato anche con gli oggetti e include una pipeline che consente di considerare nello stesso modo uno o più oggetti, grazie all'accesso generico a WMI è possibile eseguire alcune attività avanzate con poche operazioni.

Negli esempi seguenti viene illustrato come raccogliere informazioni specifiche utilizzando Get-WmiObject in un computer arbitrario. Il parametro ComputerName viene specificato con il valore di punto (.), che rappresenta il computer locale. È possibile specificare un nome o un indirizzo IP associato a qualsiasi computer raggiungibile tramite WMI. Per recuperare informazioni sul computer locale, è possibile omettere il parametro -ComputerName.

Visualizzazione dell'elenco delle impostazioni dei desktop

Il comando seguente consente di raccogliere informazioni sui desktop nel computer locale.

Get-WmiObject -Class Win32_Desktop -ComputerName .

Verranno restituite informazioni su tutti i desktop, indipendentemente dal fatto che siano o meno in uso.

Nota

Le informazioni restituite da alcune classi WMI possono essere molto dettagliate e spesso includere metadati sulla classe WMI. Poiché i nomi della maggior parte di queste proprietà dei metadati iniziano con un doppio carattere di sottolineatura, è possibile filtrare le proprietà utilizzando Select-Object. Specificare solo le proprietà che iniziano con caratteri alfabetici utilizzando [a-z]* come valore di Property. Ad esempio:

Get-WmiObject -Class Win32_Desktop -ComputerName . | Select-Object -Property [a-z]*

Per filtrare i metadati, utilizzare un operatore pipeline (|) per inviare i risultati del comando Get-WmiObject a Select-Object -Property [a-z]*.

Visualizzazione delle informazioni sul BIOS

La classe Win32_BIOS di WMI restituisce informazioni complete sul BIOS del sistema del computer locale in formato compatto:

Get-WmiObject -Class Win32_BIOS -ComputerName .

Visualizzazione delle informazioni sul processore

È possibile recuperare informazioni di carattere generale sul processore utilizzando la classe Win32_Processor di WMI, benché probabilmente si desideri filtrare le informazioni:

Get-WmiObject -Class Win32_Processor -ComputerName . | Select-Object -Property [a-z]*

Per una stringa descrittiva generica della famiglia del processore, è sufficiente restituire la proprietà Win32_ComputerSystem SystemType:

PS> Get-WmiObject -Class Win32_ComputerSystem -ComputerName . | Select-Object -Property SystemType
SystemType
----------
X86-based PC

Visualizzazione del modello e del produttore del computer

Le informazioni sul modello del computer sono disponibili anche tramite Win32_ComputerSystem. Non è necessario filtrare l'output standard visualizzato per ottenere i dati relativi all'OEM:

PS> Get-WmiObject -Class Win32_ComputerSystem
Domain              : WORKGROUP
Manufacturer        : Compaq Presario 06
Model               : DA243A-ABA 6415cl NA910
Name                : MyPC
PrimaryOwnerName    : Jane Doe
TotalPhysicalMemory : 804765696

L'output di comandi simili a questo, che restituiscono informazioni direttamente da componenti hardware, è valido quanto i dati di cui si dispone. Alcune informazioni non vengono infatti configurate correttamente dai produttori di hardware e potrebbero non essere disponibili.

Visualizzazione dell'elenco degli hotfix installati

Per visualizzare l'elenco di tutti gli hotfix installati, utilizzare Win32_QuickFixEngineering:

Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .

Questa classe restituisce un elenco di hotfix simile al seguente:

Description         : Update for Windows XP (KB910437)
FixComments         : Update
HotFixID            : KB910437
Install Date        :
InstalledBy         : Administrator
InstalledOn         : 12/16/2005
Name                :
ServicePackInEffect : SP3
Status              :

Per ridurre l'output, è possibile escludere alcune proprietà. Sebbene sia possibile utilizzare il parametro Get-WmiObject Property per scegliere solo la proprietà HotFixID, verranno comunque restituite più informazioni di quelle desiderate perché per impostazione predefinita vengono visualizzati tutti i metadati:

PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName . -Property HotFixId
HotFixID         : KB910437
__GENUS          : 2
__CLASS          : Win32_QuickFixEngineering
__SUPERCLASS     :
__DYNASTY        :
__RELPATH        :
__PROPERTY_COUNT : 1
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :

Verranno restituiti dati aggiuntivi perché il parametro Property specificato per Get-WmiObject consente di limitare le proprietà restituite dalle istanze delle classi WMI, non gli oggetti restituiti a Windows PowerShell. Per ridurre l'output, utilizzare Select-Object:

PS> Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName . -Property Hot
FixId | Select-Object -Property HotFixId
HotFixId
--------
KB910437

Visualizzazione delle informazioni relative alla versione del sistema operativo

Le proprietà della classe Win32_OperatingSystem includono informazioni sui service pack e sulla versione. È possibile selezionare esplicitamente solo queste proprietà per ottenere un riepilogo delle informazioni relative alla versione con Win32_OperatingSystem:

Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion

È inoltre possibile utilizzare i caratteri jolly con il parametro Select-Object Property. Poiché in questo esempio è importante utilizzare tutte le proprietà che iniziano con Build o ServicePack, è possibile abbreviare il comando nel modo seguente:

PS> Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property Build*,OSType,ServicePack*

BuildNumber             : 2600
BuildType               : Uniprocessor Free
OSType                  : 18
ServicePackMajorVersion : 2
ServicePackMinorVersion : 0

Visualizzazione del proprietario e degli utenti locali

Per individuare informazioni di carattere generale relative agli utenti locali, ad esempio il numero di utenti con licenza, il numero corrente di utenti e il nome del proprietario, è possibile utilizzare alcune delle proprietà di Win32_OperatingSystem. È possibile selezionare esplicitamente le proprietà come nell'esempio seguente:

Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property NumberOfLicensedUsers,NumberOfUsers,RegisteredUser

Di seguito è invece riportata una versione abbreviata del comando in cui vengono utilizzati caratteri jolly:

Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property *user*

Visualizzazione delle informazioni relative allo spazio su disco disponibile

Per visualizzare le informazioni relative allo spazio su disco e allo spazio libero per le unità locali, è possibile utilizzare la classe Win32_LogicalDisk di WMI. È necessario esaminare solo le istanze in cui DriveType è uguale a 3, ovvero al valore utilizzato da WMI per i dischi rigidi fissi.

Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName .

DeviceID     : C:
DriveType    : 3
ProviderName :
FreeSpace    : 65541357568
Size         : 203912880128
VolumeName   : Local Disk

DeviceID     : Q:
DriveType    : 3
ProviderName :
FreeSpace    : 44298250240
Size         : 122934034432
VolumeName   : New Volume

PS> Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum

Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum | Select-Object -Property Property,Sum

Visualizzazione delle informazioni relative alle sessioni di accesso

Per visualizzare informazioni di carattere generale sulle sessioni di accesso associate agli utenti, è possibile utilizzare la classe Win32_LogonSession di WMI:

Get-WmiObject -Class Win32_LogonSession -ComputerName .

Visualizzazione dell'utente che ha effettuato l'accesso a un computer

Per visualizzare l'utente che ha effettuato l'accesso a un computer specifico, è possibile utilizzare Win32_ComputerSystem. Con questo comando verrà restituito solo l'utente che ha effettuato l'accesso al desktop del sistema:

Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .

Visualizzazione dell'ora locale da un computer

Per recuperare l'ora locale corrente in un computer specifico, è possibile utilizzare la classe Win32_LocalTime di WMI. Per impostazione predefinita questa classe visualizza tutti i metadati, pertanto può essere utile filtrarli mediante Select-Object:

PS> Get-WmiObject -Class Win32_LocalTime -ComputerName . | Select-Object -Property [a-z]*


Day          : 15
DayOfWeek    : 4
Hour         : 12
Milliseconds :
Minute       : 11
Month        : 6
Quarter      : 2
Second       : 52
WeekInMonth  : 3
Year         : 2006

Visualizzazione dello stato del servizio

Per visualizzare lo stato di tutti i servizi in un computer specifico, è possibile utilizzare localmente il cmdlet Get-Service come descritto in precedenza. Nel caso di sistemi remoti è invece possibile utilizzare la classe Win32_Service di WMI. Se si utilizza anche Select-Object per filtrare i risultati in base a Status, Name e DisplayName, il formato di output sarà quasi identico a quello ottenuto con Get-Service:

Get-WmiObject -Class Win32_Service -ComputerName . | Select-Object -Property Status,Name,DisplayName

Per consentire la visualizzazione completa dei nomi di servizi occasionali con nomi particolarmente lunghi, è consigliabile utilizzare Format-Table con i parametri AutoSize e Wrap per ottimizzare la larghezza della colonna e applicare ai nomi lunghi il ritorno a capo anziché troncarli:

Get-WmiObject -Class Win32_Service -ComputerName . | Format-Table -Property Status,Name,DisplayName -AutoSize -Wrap




Argomenti della Guida