当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 收集有关计算机的信息

作者:精品下载站 日期:2024-12-14 03:02:54 浏览:12 分类:玩电脑

收集有关计算机的信息


该示例仅适用于Windows平台。

CimCmdlets 模块中的 Cmdlet 是一般系统管理任务中最重要的 cmdlet。所有关键子系统设置均通过 WMI 公开。此外,WMI 将数据视为一项或多项集合中的对象。由于 PowerShell 还可以处理对象,并且具有允许您以相同方式处理单个或多个对象的管道,因此通用 WMI 访问允许您只需很少的工作即可执行一些高级任务。

列出桌面设置

我们将从收集有关本地计算机上桌面的信息的命令开始。

Get-CimInstance -ClassName Win32_Desktop

这将返回所有桌面的信息,无论它们是否正在使用。

笔记

某些 WMI 类返回的信息可能非常详细,并且通常包括有关 WMI 类的元数据。

由于大多数元数据属性的名称都以 Cim 开头,因此您可以使用 Select-Object 筛选属性。指定 -ExcludeProperty 参数,并将“Cim*”作为值。例如:

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

要过滤掉元数据,请使用管道运算符 (|) 将 Get-CimInstance 命令的结果发送到 Select-Object -ExcludeProperty "CIM*"

列出 BIOS 信息

WMI Win32_BIOS 类返回有关本地计算机上系统 BIOS 的相当紧凑且完整的信息:

Get-CimInstance -ClassName Win32_BIOS

列出处理器信息

您可以使用 WMI 的 Win32_Processor 类检索一般处理器信息,但您可能希望过滤该信息:

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

对于处理器系列的通用描述字符串,您可以只返回 SystemType 属性:

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

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

列出计算机制造商和型号

还可以从 Win32_ComputerSystem 获取计算机型号信息。标准显示输出不需要任何过滤即可提供 OEM 数据:

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

诸如此类的命令的输出直接从某些硬件返回信息,其输出与您拥有的数据一样好。某些信息未由硬件制造商正确配置,因此可能不可用。

列出已安装的修补程序

您可以使用 Win32_QuickFixEngineering 列出所有已安装的修补程序:

Get-CimInstance -ClassName Win32_QuickFixEngineering

此类返回一个修补程序列表,如下所示:

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

为了更简洁的输出,您可能需要排除一些属性。虽然您可以使用 Get-CimInstanceProperty 参数仅选择 HotFixID,但这样做实际上会返回更多信息,因为所有默认显示元数据:

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

返回附加数据是因为 Get-CimInstance 中的 Property 参数限制从 WMI 类实例返回的属性,而不是返回到 PowerShell 的对象。要减少输出,请使用Select-Object

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

列出操作系统版本信息

Win32_OperatingSystem 类属性包括版本和服务包信息。您可以仅显式选择这些属性来从 Win32_OperatingSystem 获取版本信息摘要:

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

您还可以在 Property 参数中使用通配符。由于所有以 BuildServicePack 开头的属性在此处使用都很重要,因此我们可以将其缩短为以下形式:

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

列出本地用户和所有者

有关本地用户的一般信息可以通过选择Win32_OperatingSystem 类属性来找到。您可以显式选择要显示的属性,如下所示:

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

使用通配符的更简洁的版本是:

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

获取可用磁盘空间

要查看本地驱动器的磁盘空间和可用空间,可以使用 Win32_LogicalDisk 类。您只需查看 DriveType 为 3(WMI 用于固定硬盘的值)的实例。

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

获取登录会话信息

您可以通过 Win32_LogonSession WMI 类获取与用户关联的登录会话的一般信息:

Get-CimInstance -ClassName Win32_LogonSession

让用户登录到计算机

您可以使用 Win32_ComputerSystem 显示登录到特定计算机系统的用户。此命令仅返回登录到系统桌面的用户:

Get-CimInstance -ClassName Win32_ComputerSystem -Property UserName

从计算机获取当地时间

您可以使用Win32_LocalTime WMI 类检索特定计算机上的当前本地时间。

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 :

显示服务状态

要查看特定计算机上所有服务的状态,您可以在本地使用 Get-Service cmdlet。对于远程系统,您可以使用Win32_Service WMI 类。如果您还使用 Select-Object 将结果过滤为 StatusNameDisplayName,则输出格式与 Get-Service 几乎相同:

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

要允许完整显示长名称服务的名称,请使用 Format-TableAutoSizeWrap 参数。这些参数优化列宽并允许长名称换行而不是被截断:

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

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯