日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PowerShell 收集计算机相关信息

發布時間:2025/3/20 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PowerShell 收集计算机相关信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

收集有關計算機的信息

Get-WmiObject 是用于執行常規系統管理任務的最重要的 cmdlet。所有關鍵的子系統設置都是通過 WMI 公開的。此外,WMI 將數據視為有一個或多個項目的集合中的對象。由于 Windows PowerShell 還能處理對象,并且它的管道允許您以相同方式對待單個或多個對象,因此,通用 WMI 訪問可讓您用非常少的工作量執行一些高級任務。

以下示例演示如何通過對任意計算機使用 Get-WmiObject 來收集特定信息。我們使用表示本地計算機的點值 (.) 來指定 ComputerName 參數。您可以指定與可以通過 WMI 訪問的任何計算機關聯的名稱或 IP 地址。若要檢索有關本地計算機的信息,可以省略 -ComputerName.

列出桌面設置

我們首先介紹用于收集本地計算機的桌面相關信息的命令。

Get-WmiObject?-Class?Win32_Desktop?-ComputerName?.

此命令將返回所有桌面的信息,無論它們是否正在使用。

注意:

某些 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 收集计算机相关信息的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。