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