PowerShell 收集计算机相关信息

2024-06-06 18:23:06

收集有关计算机的信息

Get-WmiObject 是用于执行常规系统管理任务的最重要的 cmdlet。所有关键的子系统设置都是通过 WMI 公开的。此外,WMI 将数据视为有一个或多个项目的集合中的对象。由于 Windows PowerShell 还能处理对象,并且它的管道允许您以相同方式对待单个或多个对象,因此,通用 WMI 访问可让您用非常少的工作量执行一些高级任务。

以下示例演示如何通过对任意计算机使用 Get-WmiObject 来收集特定信息。我们使用表示本地计算机的点值 (.) 来指定 ComputerName 参数。您可以指定与可以通过 WMI 访问的任何计算机关联的名称或 IP 地址。若要检索有关本地计算机的信息,可以省略 -ComputerName.

列出桌面设置

我们首先介绍用于收集本地计算机的桌面相关信息的命令。

Get-WmiObject -Class Win32_Desktop -ComputerName .

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

Note.gif 注意:

某些 WMI 类返回的信息可能非常详细,并且通常包含有关 WMI 类的元数据。由于这些元数据属性的名称大多数都以双下划线开头,因此可以使用 Select-Object 筛选这些属性。请使用 [a-z]* 作为 Property 值仅指定以字母字符开头的属性。例如:

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

若要筛选元数据,请使用管道运算符 (|) 将 Get-WmiObject 命令的结果发送到 Select-Object -Property [a-z]*

列出 BIOS 信息

WMI Win32_BIOS 类可以返回有关本地计算机系统 BIOS 的相当精简和完整的信息:

Get-WmiObject -Class Win32_BIOS -ComputerName .

列出处理器信息

可以使用 WMI 的 Win32_Processor 类检索常规处理器信息,但还可能需要筛选这些信息:

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

若要获取处理器系列的一般说明字符串,只需返回 Win32_ComputerSystem SystemType 属性:

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

列出计算机制造商和型号

还可从 Win32_ComputerSystem 获取计算机型号信息。标准的显示输出不需要进行任何筛选,即可提供 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

像这样的命令输出(直接从某些硬件返回信息)实际上只是您拥有的数据。某些信息未被硬件制造商正确配置,因此可能不可用。

列出已安装的修补程序

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

Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .

该类返回修补程序的列表,如下所示:

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

若要得到更简洁的输出,可能需要排除某些属性。虽然可以使用 Get-WmiObject Property 参数只选择 HotFixID,但这样做实际上将返回更多信息,因为默认情况下将显示所有元数据:

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           :

由于 Get-WmiObject 中的 Property 参数限制从 WMI 类实例返回的属性,而不限制返回到 Windows PowerShell 的对象,因此还会返回其他数据。若要减少输出,请使用 Select-Object

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

列出操作系统版本信息

Win32_OperatingSystem 类属性包括版本和 Service Pack 信息。可以只明确选择这些属性,以便从 Win32_OperatingSystem 获取版本信息摘要:

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

还可以在 Select-Object Property 参数中使用通配符。因为所有以 BuildServicePack 开头的属性在这里都是重要的,所以可以将该命令缩短为以下形式:

PS> Get-WmiObject -Class Win32_OperatingSystem -ComputerName . | Select-Object -Property Build*,OSType,ServicePack*BuildNumber             : 2600
BuildType               : Uniprocessor Free
OSType                  : 18
ServicePackMajorVersion : 2
ServicePackMinorVersion : 0

列出本地用户和所有者

通过选择 Win32_OperatingSystem 属性可以查找本地常规用户信息,包括许可用户数、当前用户数和所有者名称。可以显式选择要显示的属性,如下所示:

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

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

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

获得可用磁盘空间

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

Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName .DeviceID     : C:
DriveType    : 3
ProviderName :
FreeSpace    : 65541357568
Size         : 203912880128
VolumeName   : Local DiskDeviceID     : Q:
DriveType    : 3
ProviderName :
FreeSpace    : 44298250240
Size         : 122934034432
VolumeName   : New VolumePS> Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -SumGet-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3" -ComputerName . | Measure-Object -Property FreeSpace,Size -Sum | Select-Object -Property Property,Sum

获得登录会话信息

通过 WMI Win32_LogonSession 类可以获得与用户关联的登录会话的常规信息:

Get-WmiObject -Class Win32_LogonSession -ComputerName .

获得登录到计算机的用户

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

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

从计算机获得本地时间

使用 WMI Win32_LocalTime 类可以在特定计算机上检索当前本地时间。因为默认情况下此类显示所有元数据,所以可能需要使用 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

显示服务状态

若要查看特定计算机上所有服务的状态,可以像前面提到的那样在本地使用 Get-Service cmdlet。对于远程系统,可以使用 WMI Win32_Service 类。如果还使用 Select-Object 来筛选 StatusNameDisplayName 的结果,则输出格式将与 Get-Service 的输出几乎相同。

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

若要允许完整显示名称非常长的临时服务的名称,可能需要使用带有 AutoSizeWrap 参数的 Format-Table 命令,以优化列宽并允许长名称换行而不被截断:

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

转载于:https://blog.51cto.com/timefiles/1789522

PowerShell 收集计算机相关信息相关推荐

  1. c 获取计算机相关信息,C#编程获取各种电脑硬件信息的方法示例

    本文实例讲述了C#编程获取各种电脑硬件信息的方法.分享给大家供大家参考,具体如下: 获取CPU编号: ManagementClass mc = new ManagementClass("Wi ...

  2. 最先进计算机相关信息,世界上最先进的计算机,量子计算机超级强大

    世界开辟计算机的先河也已经有近100年的历史了,随着科学技术的不断更新,计算机的性能也逐渐变得越来越强大,那么大家知道世界上最先进的计算机是哪一种吗?它就是量子计算机,这种计算机对科学的发展也起到很重 ...

  3. 内网渗透(十七)之内网信息收集-powershell收集域内信息和敏感数据定位

    系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内 ...

  4. PowerShell WMI 收集有关计算机的信息

    收集有关计算机的信息 Get-WmiObject -Query "Select * from ClassName" 命令可以在Winodws/2003的PowerShell 2.0 ...

  5. 信息收集域名、IP、端口服务、指纹识别相关信息

    信息收集域名.IP.端口服务.指纹识别.Googlehacking.目录信息.Githack相关信息 域名相关的信息 域名是什么 域名的分类 国际域名 国别域名 新顶级域名 域名联系人信息 whois ...

  6. 计算机的相关配置信息,win7系统查看电脑配置相关信息的方案介绍

    win7系统使用久了,好多网友反馈说win7系统查看电脑配置相关信息的问题,非常不方便.有什么办法可以永久解决win7系统查看电脑配置相关信息的问题,面对win7系统查看电脑配置相关信息的图文步骤非常 ...

  7. 计算机中的无线网卡使用哪两种类型的扩展槽,第三章计算机每一种扩展槽的相关信息.ppt...

    第三章计算机每一种扩展槽的相关信息 Product Department Zhang Yun Yun 2013.NOV 第三章 扩展槽 入琵商要篱邹囱驮飞长洞女阳弄驳成短椰此吴撤踌订览骄驴峰记号惰臻贝 ...

  8. 2012年9月 吉林大学计算机相关专业招聘会信息汇总

    2012年9月 吉大南区计算机相关专业招聘会 日期 企业名称 宣讲地点 性质 基本要求 链接地址 9-11 大众汽车集团(中国) 南岭 逸夫B区114    19:00 你懂的 ***** 大众 北京 ...

  9. 大学计算机(软件类)专业推荐竞赛 / 证书 官网及赛事相关信息整理

    大学计算机专业(软件)推荐竞赛 / 证书 官网及赛事相关信息 一.算法类(丰富简历): 1.ACM国际大学生程序设计竞赛: 官网:https://icpc.global/ 国内:http://icpc ...

最新文章

  1. 杭电acm1004java答案_水过杭电OJ hdu1004
  2. Python学习之路--函数
  3. javascript深入理解js闭包
  4. ListView使用技巧-更新中
  5. 大环境下瑟瑟发抖辞职的第二天,拿了两个 offer
  6. sm4 的s盒_SM4国密算法Java版
  7. 使用VS2003创建WEB程序的时候出现AutoMation服务器不能创建对象错误
  8. 机器学习导论(张志华):主元分析
  9. Drop Table对MySQL的性能影响分析
  10. Command ***/bin/ git fetch --tags --progress denied
  11. matlab eval 不显示,matlab中 eval(command); 运算符无效的问题
  12. python实参_python的形参和实参
  13. 微博发布公告 将开展财经违规内容专项整治行动
  14. Error: Can’t resolve ‘./src’ in ‘E:\ASUS\Documents\VSCode files\WebPackProject’
  15. FLEX AIR添加系统托盘图标步骤
  16. CamShift算法,OpenCV实现(3):CamShift算法
  17. Direct2D教程(七)单色画刷
  18. java基础回顾(一)—— sleep和wait的区别
  19. Telnet Sequence Diagram
  20. 灵灵兔人事考勤薪资软件系统kqwins:连接失败

热门文章

  1. 总体经济拉动新引擎-农业大健康·张咏:疫情后谋定乡村振兴
  2. Codevs 3002 石子归并 3(DP四边形不等式优化)
  3. 基本HTTP协议流程是什么?
  4. flex属性值----弹性盒子布局
  5. shell中使用echo命令改变输出显示样式
  6. RMI-IIOP与JNDI简单小结
  7. IBatis.Net学习笔记二--下载、编译、运行NPetShop
  8. 8000字干货 | 教你打造电商产品的用户体系
  9. 分页与无限滚动在评论区的设计差异
  10. 配置化的版本更新引导怎么做?