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