Raccolta di informazioni sui computer

Questo esempio si applica solo alle piattaforme Windows.

I cmdlet nel modulo CimCmdlets sono i più importanti per le attività di gestione generali del sistema. Tutte le impostazioni del sottosistema cruciali sono esposte tramite WMI. WMI gestisce inoltre i dati come oggetti inclusi in raccolte di uno o più elementi. Poiché PowerShell funziona anche con oggetti e dispone di una pipeline che consente di trattare singoli o più oggetti nello stesso modo, l'accesso WMI generico consente di eseguire alcune attività avanzate con pochissimo lavoro.

Elenco delle impostazioni desktop

Inizieremo con un comando che raccoglie informazioni sui desktop nel computer locale.

Get-CimInstance -ClassName Win32_Desktop

In questo modo vengono restituite informazioni per tutti i desktop, indipendentemente dal fatto che siano in uso o meno.

Nota

Le informazioni restituite da alcune classi WMI possono essere molto dettagliate e spesso includono i metadati sulla classe WMI.

Dato che la maggior parte delle proprietà di questi metadati ha nomi che iniziano con Cim, è possibile filtrare le proprietà usando Select-Object. Specificare il parametro - ExcludeProperty usando "Cim *" come valore. Ad esempio:

Get-CimInstance -ClassName Win32_Desktop | Select-Object -ExcludeProperty "CIM*"

Per escludere i metadati, usare un operatore pipeline (|) per inviare i risultati del comando Get-CimInstance a Select-Object -ExcludeProperty "CIM*".

Elenco delle informazioni sul BIOS

La classe WMI Win32_BIOS restituisce informazioni piuttosto compatte e complete sul BIOS di sistema nel computer locale:

Get-CimInstance -ClassName Win32_BIOS

Elenco delle informazioni sul processore

È possibile recuperare informazioni generali sul processore tramite la classe WMI Win32_Processor, anche se è probabile che si preferisca filtrare le informazioni:

Get-CimInstance -ClassName Win32_Processor | Select-Object -ExcludeProperty "CIM*"

Per ottenere una stringa di descrizione generica della famiglia di processori, è possibile restituire semplicemente la proprietà SystemType:

Get-CimInstance -ClassName Win32_ComputerSystem | Select-Object -Property SystemType

SystemType
----------
X86-based PC

Elenco del produttore e del modello del computer

Le informazioni sul modello di computer sono disponibili anche da Win32_ComputerSystem. Non sarà necessario filtrare l'output visualizzato standard per fornire dati OEM:

Get-CimInstance -ClassName Win32_ComputerSystem
Name PrimaryOwnerName Domain    TotalPhysicalMemory Model                   Manufacturer
---- ---------------- ------    ------------------- -----                   ------------
MyPC Jane Doe         WORKGROUP 804765696           DA243A-ABA 6415cl NA910 Compaq Presario 06

La validità dell'output di comandi come questo, che restituiscono informazioni direttamente dai componenti hardware, dipende esclusivamente dai dati disponibili. Alcune informazioni non sono configurate correttamente dai produttori hardware e potrebbero quindi non essere disponibili.

Elenco degli hotfix installati

È possibile ottenere un elenco di tutti gli hotfix installati tramite Win32_QuickFixEngineering:

Get-CimInstance -ClassName Win32_QuickFixEngineering

Questa classe restituisce un elenco di hotfix simile al seguente:

Source Description     HotFixID  InstalledBy   InstalledOn PSComputerName
------ -----------     --------  -----------   ----------- --------------
       Security Update KB4048951 Administrator 12/16/2017  .

Per ottenere un output più conciso, è possibile escludere alcune proprietà. Anche se è possibile usare il parametro Property di Get-CimInstance per scegliere solo HotFixID, in questo modo si otterranno in realtà più informazioni, perché per impostazione predefinita vengono visualizzati tutti i metadati:

Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixID
InstalledOn           :
Caption               :
Description           :
InstallDate           :
Name                  :
Status                :
CSName                :
FixComments           :
HotFixID              : KB4533002
InstalledBy           :
ServicePackInEffect   :
PSComputerName        :
CimClass              : root/cimv2:Win32_QuickFixEngineering
CimInstanceProperties : {Caption, Description, InstallDate, Name…}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties
...

Vengono restituiti dati aggiuntivi perché il parametro Property in Get-CimInstance limita le proprietà restituite dalle istanze della classe WMI, non l'oggetto restituito a PowerShell. Per ridurre l'output, usare Select-Object:

Get-CimInstance -ClassName Win32_QuickFixEngineering -Property HotFixId |
    Select-Object -Property HotFixId
HotFixId
--------
KB4048951

Elenco delle informazioni sulla versione del sistema operativo

Le proprietà della classe Win32_OperatingSystem includono informazioni sulla versione e sui Service Pack. È possibile selezionare esplicitamente queste proprietà per ottenere un riepilogo delle informazioni sulla versione da Win32_OperatingSystem:

Get-CimInstance -ClassName Win32_OperatingSystem |
  Select-Object -Property BuildNumber,BuildType,OSType,ServicePackMajorVersion,ServicePackMinorVersion

È anche possibile usare caratteri jolly con il parametro Property . Dato che in questo caso è importante usare tutte le proprietà che iniziano con Build o ServicePack, è possibile abbreviare il comando in questo modo:

Get-CimInstance -ClassName Win32_OperatingSystem |
    Select-Object -Property Build*,OSType,ServicePack*
BuildNumber             : 18362
BuildType               : Multiprocessor Free
OSType                  : 18
ServicePackMajorVersion : 0
ServicePackMinorVersion : 0

Elenco di utenti locali e proprietario

Informazioni generali sugli utenti locali sono disponibili con una selezione di proprietà della classe Win32_OperatingSystem . È possibile selezionare in modo esplicito le proprietà da visualizzare come segue:

Get-CimInstance -ClassName Win32_OperatingSystem |
    Select-Object -Property NumberOfLicensedUsers, NumberOfUsers, RegisteredUser

Questa è una versione più concisa con caratteri jolly:

Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property *user*

Recupero dello spazio disponibile su disco

Per visualizzare lo spazio su disco e lo spazio disponibile per le unità locali, è possibile usare la classe Win32_LogicalDisk . È necessario visualizzare solo le istanze con driveType 3, il valore usato da WMI per i dischi rigidi fissi.

Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3"
DeviceID DriveType ProviderName VolumeName Size         FreeSpace   PSComputerName
-------- --------- ------------ ---------- ----         ---------   --------------
C:       3                      Local Disk 203912880128 65541357568 .
Q:       3                      New Volume 122934034432 44298250240 .
Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" |
    Measure-Object -Property FreeSpace,Size -Sum |
    Select-Object -Property Property,Sum
Property           Sum
--------           ---
FreeSpace 109839607808
Size      326846914560

Recupero delle informazioni sulla sessione di accesso

È possibile ottenere informazioni generali sulle sessioni di accesso associate agli utenti tramite la classe WMI Win32_LogonSession:

Get-CimInstance -ClassName Win32_LogonSession

Accesso dell'utente a un computer

È possibile visualizzare l'utente connesso a un particolare sistema informatico usando Win32_ComputerSystem. Questo comando restituisce solo l'utente connesso al desktop di sistema:

Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName

Recupero dell'ora locale da un computer

È possibile recuperare l'ora locale corrente in un computer specifico usando la classe WMI Win32_LocalTime .

Get-CimInstance -ClassName Win32_LocalTime
Day            : 23
DayOfWeek      : 1
Hour           : 8
Milliseconds   :
Minute         : 52
Month          : 12
Quarter        : 4
Second         : 55
WeekInMonth    : 4
Year           : 2019
PSComputerName :

Visualizzazione dello stato del servizio

Per visualizzare lo stato di tutti i servizi in un computer specifico, è possibile usare in locale il cmdlet Get-Service. Per i sistemi remoti, è possibile usare la classe WMI Win32_Service. Se si usa Select-Object anche per filtrare i risultati in Stato, Nome e DisplayName, il formato di output è quasi identico a quello di Get-Service:

Get-CimInstance -ClassName Win32_Service |
    Select-Object -Property Status,Name,DisplayName

Per consentire la visualizzazione completa dei nomi per i servizi con nomi lunghi, usare i parametri AutoSize e Wrap di Format-Table. Questi parametri ottimizzano la larghezza della colonna e consentono di eseguire il wrapping dei nomi lunghi invece di essere troncati:

Get-CimInstance -ClassName Win32_Service |
    Format-Table -Property Status, Name, DisplayName -AutoSize -Wrap