用Windows PowerShell检测系统,硬件,驱动信息,运行跑分,附函数模组写法示例 更新5
❀原创教程,转载本页必须注明链接和作者
❀目前本文档处于发布早期,会频繁更新/修bug,出问题求不锤
这套PowerShell命令行属于基础难度,方便修改,而且执行起来不比现有的软件系统检测慢。换了硬件可以拿来跑一遍跑个分,查看硬件信息,查询序列号,自带汉化,稍微改改还可以远程在别的计算机上生成报告。下面正式开始教程(っ╹◡╹)ノ
报错:若闪退,或者遇到无法加载文件,因为在此系统上禁止运行脚本。
报错,可以用Get-ExecutionPolicy
回车检查是否为Restricted(限制),然后用Set-ExecutionPolicy RemoteSigned
恢复权限(大概需要管理员密码)即可。
(来源于简书:sinler(转载自鲸鱼啊)。)
更新4:增加了存在和未知USB设备的检测步骤
代码如下,拷下来用Unicode/UTF-8编码保存为`系统检测.ps1`运行即可(⊙_◎):
clear
"检测日期: {0:dddd, MMMM dd, yyyy}" -f (Get-Date)
"计算机名: "+$env:computername+", `n"+(Get-WmiObject -class Win32_OperatingSystem).Caption
switch (Read-Host "`n运行系统跑分吗(耗时~5分钟,输入y或n后按Enter)") {
'y' {WinSat formal}
'n' {"跑分跳过!"}
default {"未输入条件!"}
}
#设定标题长20
[int]$tCenter = 28
"`n 系Windows`n 统`n 体Experience`n 验`n 跑Index`n 分(筛选最差)`n"
$ExpIdx = Get-CimInstance Win32_WinSat | Select CPUScore,D3DScore,DiskScore,GraphicsScore,WinSATAssessmentState,WinSPRLevel
#标题和居中计算
[string]$heading = "总分: "+$ExpIdx.WinSPRLevel
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"处理器得分: "+$ExpIdx.CPUScore
"2D图形得分: "+$ExpIdx.GraphicsScore
"3D图形得分: "+$ExpIdx.D3DScore
"硬盘得分: "+$ExpIdx.DiskScore
"`n`n 主Mother`n 板board`n"
$MB = Get-WmiObject Win32_Baseboard | Select Status,Product,Manufacturer,Model,SerialNumber,Version
"名称: "+$MB.Product
"厂商: "+$MB.Manufacturer
"状况: "+$MB.Status
"型号: "+$MB.Model
"序列号: "+$MB.SerialNumber
"版本: "+$MB.Version+"`n"
"`n 中C`n 央P`n 处U`n 理`n 器`n"
$AllProcs = Get-CimInstance Win32_Processor | Select Availability,CurrentClockSpeed,MaxClockSpeed,Name,DeviceID,NumberOfCores,ThreadCount,LoadPercentage,VoltageCaps,VirtualizationFirmwareEnabled,L2CacheSize,L3CacheSize
#为多路处理器系统准备的循环
ForEach ($_ in $AllProcs) {
#区分设备运行与供电状态
Switch ($_.Availability) {
2{[string]$prState = "未知"}
3{[string]$prState = "正常"}
4{[string]$prState = "报警中"}
5{[string]$prState = "处于测试状态"}
18{[string]$prState = "暂停中"}
11{[string]$prState = "未安装"}
12{[string]$prState = "安装错误"}
16{[string]$prState = "重新启动中"}
17{[string]$prState = "省电模式: 警告"}
13{[string]$prState = "省电模式: 未知"}
14{[string]$prState = "省电模式: 节能"}
15{[string]$prState = "省电模式: 待机"}
20{[string]$prState = "处理器缺少状态参数"}
21{[string]$prState = "反馈被阻止"}
Default{$prState = $_.Availability}
}
#标题和居中计算
[string]$heading = $_.DeviceID
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"型号: "+$_.Name
"频率: 当前"+$_.CurrentClockSpeed+"Mhz, 最大"+$_.MaxClockSpeed+"Mhz"
"状态: "+$prState
"二级缓存大小: "+$_.L2CacheSize / 1024+"MB"
"三级缓存大小: "+$_.L3CacheSize / 1024+"MB"
"最大工作电压: "+$_.VoltageCaps / 1000+"V"
"当前负载: "+$_.LoadPercentage+"%"
"虚拟化已开: "+$_.VirtualizationFirmwareEnabled
""
}
"`n 内R`n 存A`n 条M`n"
$AllMemos = Get-WmiObject -Class Win32_PhysicalMemory | Select Manufacturer,ConfiguredVoltage,MaxVoltage,PartNumber,Speed,Tag,Capacity
ForEach ($_ in $AllMemos) {
#计算内存容量
[int]$MemSize = $_.Capacity / 1GB
#标题和居中计算
[string]$heading = $_.Tag
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"容量:"+$MemSize+"GB"
"厂商: "+$_.Manufacturer
"型号: "+$_.PartNumber
"频率: "+$_.Speed+"MT/s(Mbps)"
"最大工作电压: "+$_.MaxVoltage / 1000+"V, 目前:"+$_.ConfiguredVoltage / 1000+"V"
""
}
"`n B`n I`n O`n S`n"
$BiosCond = Get-CimInstance Win32_BIOS | Select Status,Name,BIOSVersion,SMBIOSBIOSVersion,ReleaseDate
"名称: "+$BiosCond.Name
"状况: "+$BiosCond.Status
"安装BIOS版本: "+$BiosCond.BIOSVersion
"发行日期: "+$BiosCond.ReleaseDate
"系统用BIOS版本: "+$BiosCond.SMBIOSBIOSVersion+"`n"
"注:MSI微星BIOS版号写作如7C91vA9的数字;其中vA9代表Version A.90或其它数字"
"`n 图G`n 形P`n 处U`n 理`n 器`n"
$GPUCond = Get-WMIObject -Class Win32_VideoController | Select DeviceID,Availability,Name,DriverVersion,DriverDate,VideoModeDescription,CurrentBitsPerPixel
#为多显卡系统准备的循环
ForEach ($_ in $GPUCond) {
#区分设备运行与供电状态
Switch ($_.Availability) {
2{[string]$prState = "未知"}
3{[string]$prState = "正常"}
4{[string]$prState = "报警中"}
5{[string]$prState = "处于测试状态"}
18{[string]$prState = "暂停中"}
11{[string]$prState = "未安装"}
12{[string]$prState = "安装错误"}
16{[string]$prState = "重新启动中"}
17{[string]$prState = "省电模式: 警告"}
13{[string]$prState = "省电模式: 未知"}
14{[string]$prState = "省电模式: 节能"}
15{[string]$prState = "省电模式: 待机"}
20{[string]$prState = "处理器缺少状态参数"}
21{[string]$prState = "反馈被阻止"}
Default{$prState = $_.Availability}
}
#标题和居中计算
[string]$heading = $_.DeviceID+": "+$_.Name
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"状态: $prState"
"驱动: Ver"+$_.DriverVersion+", 发布于"+$_.DriverDate
"显示方案: "+$_.VideoModeDescription
"显示位深: "+$_.CurrentBitsPerPixel+"bit"
""
}
"`n 物Physical`n 理`n 硬Disk`n 盘`n"
$DiskPhc = Get-Disk | Select DiskNumber,PartitionStyle,HealthStatus,FirmwareVersion,FriendlyName,SerialNumber,Size,AllocatedSize,Location
ForEach ($_ in $DiskPhc) {
#标题和居中计算
[string]$heading = "盘"+$_.DiskNumber+": "+$_.FriendlyName
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"分区表: "+$_.PartitionStyle
"序列号: "+$_.SerialNumber
"固件版本: "+$_.FirmwareVersion
"设定容量: {0:n0}GB" -f($_.AllocatedSize / 1GB)
"实际容量: {0:n0}GB" -f($_.Size / 1GB)
"健康状况: "+$_.HealthStatus
"接口位置: "+$_.Location
""
}
"`n 逻Logical`n 辑`n 磁Disk`n 盘`n"
$DiskLgc = Get-WMIObject -Class Win32_LogicalDisk | Select FileSystem,DeviceID,Description,Size,FreeSpace,VolumeName
ForEach ($_ in $DiskLgc) {
if (!$_.FileSystem) {$DriveSys = "Not Available"}
else {$DriveSys = $_.FileSystem}
#标注空的逻辑磁盘
if (!$_.Size) {$Capacity = "不可用(N/A)"; $DiskSpace = "不可用(N/A)"}
else {
$Capacity = "{0:n1}GB" -f($_.Size / 1GB)
$DiskSpace ="{0:n1}GB" -f($_.FreeSpace / 1GB)
}
#标题和居中计算
[string]$heading = "$DiskType"+$_.DeviceID+" "+$_.DiskNumber+$_.VolumeName
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"磁盘类型: "+$_.Description
"文件系统: $DriveSys"
"容量: $Capacity"
"剩余容量: $DiskSpace"
""
}
"`n U`n S`n B`n"
Get-PnpDevice -Class USB -FriendlyName *USB* -Status OK `
| Sort-Object -Unique FriendlyName `
| Format-Table -AutoSize @{l='本机的USB设备';e='FriendlyName'},@{l='硬件实例ID';e='InstanceId'}
Get-PnpDevice -Class USB -FriendlyName *USB* -Status Unknown `
| Sort-Object -Unique FriendlyName `
| Format-Table -AutoSize @{l='未知的USB设备(系统迁徙或旧设备残留)';e='FriendlyName'},@{l='硬件实例ID';e='InstanceId'}
if ($?) {"Get-PnpDevice 检测到未知设备残留,可以使用SPOOCQ - ghostbuster清理`n"} else {"Get-PnpDevice 未检测到残留,系统很干净哦`n"}
"`n AMD 驱`n Intel 动`n NVIDIA"
Get-WmiObject Win32_PnPSignedDriver `
| Select-Object DeviceName,DriverVersion,DriverDate `
| Where-Object {($_.DriverDate -ne $null) -and $_.DeviceName -cmatch 'AMD' -or $_.DeviceName -cmatch 'Radeon' -or $_.DeviceName -cmatch 'Intel' -or $_.DeviceName -cmatch 'NVIDIA'} `
| Sort-Object -Unique DriverDate `
| Format-Table -AutoSize @{l='硬件';e='DeviceName'},@{l='驱动版本';e='DriverVersion';a='Right'},@{l='编译日期';e={(Get-WmiObject -Class Win32_OperatingSystem).ConvertToDateTime($_.DriverDate).ToString('yyyy年MM月dd日')};a='Right'} -DisplayError
"`n AMD 软`n Intel 件`n NVIDIA"
Get-WmiObject -Class Win32_Product `
| Select-Object Name,Version `
| Where-Object {$_.Name -cmatch 'AMD' -or $_.Name -cmatch 'Intel' -or $_.Name -cmatch 'NVIDIA'} `
| Sort-Object -Unique Version `
| Format-Table -Autosize @{l='软件';e='Name'},@{l='软件版本';e='Version';a='Right'} -DisplayError
pause
符合PowerShell函数模块格式标准(大概)的写法也不能少。分为后缀.psm1
的模块及.psd1
的清单文件,默认放于$HOME\Documents\PowerShell\Modules
下;用时打开PowerShell输入Import-Module xx.psm1
,然后调用里面的函数就能跑了。
这个函数改版将运行系统跑分的选项从Read-host改成了输入参数,默认否,也是做参考用的
Function Get-myPC {
<#
.Synopsis
列出本电脑系统及所有硬件的信息。
.Description
使用Get-myPC函数获取计算机名,Windows版本,Windows体验指数跑分,以及主板,处理器,内存条,BIOS,显卡,物理磁盘和逻辑磁盘的详细信息。
Get-myPC函数不需要参数,直接输入即运行。输入-Runbenchmark y以运行跑分,参数值默认为n,代表跳过。
举例,输入Get-myPC函数并回车,该函数随即自动列出本电脑系统及所有硬件的信息。
举例,输入Get-myPC -Runbenchmark y并回车,该函数随即运行Windows体验指数性能跑分,并列出本电脑系统及所有硬件的信息。
.Example
Get-myPC
检测日期: 星期五, 四月 01, 2022
计算机名: R5-2600,
Microsoft Windows 10 企业版 LTSC
跑分跳过!
系Windows
统
体Experience
验
跑Index
分(筛选最差)
----------------总分: 8.9----------------
处理器得分: 9.5
2D图形得分: 9.9
3D图形得分: 9.9
硬盘得分: 8.9
主Mother
板board
名称: X470 AORUS ULTRA GAMING-CF
厂商: Gigabyte Technology Co., Ltd.
状况: OK
型号:
序列号: Default string
版本: Default string
---后来输出内容省略---
.Example
Get-myPC -Runbenchmark y
检测日期: 星期五, 四月 01, 2022
计算机名: R5-2600,
Microsoft Windows 10 企业版 LTSC
系Windows
统
体Experience
验
跑Index
分(筛选最差)
----------------总分: 8.9----------------
处理器得分: 9.5
2D图形得分: 9.9
3D图形得分: 9.9
硬盘得分: 8.9
主Mother
板board
名称: X470 AORUS ULTRA GAMING-CF
厂商: Gigabyte Technology Co., Ltd.
状况: OK
型号:
序列号: Default string
版本: Default string
---后来输出内容省略---
#>
"检测日期: {0:dddd, MMMM dd, yyyy}" -f (Get-Date)
"计算机名: "+$env:computername+", "+(Get-WmiObject -class Win32_OperatingSystem).Caption
Param([string]$Runbenchmark = "n")
switch ($Runbenchmark) {
'y' {WinSat formal}
'n' {"跑分跳过!"}
default {"未输入条件!"}
}
#设定标题长20
[int]$tCenter = 28
"`n 系Windows`n 统`n 体Experience`n 验`n 跑Index`n 分(筛选最差)`n"
$ExpIdx = Get-CimInstance Win32_WinSat | Select CPUScore,D3DScore,DiskScore,GraphicsScore,WinSATAssessmentState,WinSPRLevel
#标题和居中计算
[string]$heading = "总分: "+$ExpIdx.WinSPRLevel
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"处理器得分: "+$ExpIdx.CPUScore
"2D图形得分: "+$ExpIdx.GraphicsScore
"3D图形得分: "+$ExpIdx.D3DScore
"硬盘得分: "+$ExpIdx.DiskScore
"`n`n 主Mother`n 板board`n"
$MB = Get-WmiObject Win32_Baseboard | Select Status,Product,Manufacturer,Model,SerialNumber,Version
"名称: "+$MB.Product
"厂商: "+$MB.Manufacturer
"状况: "+$MB.Status
"型号: "+$MB.Model
"序列号: "+$MB.SerialNumber
"版本: "+$MB.Version+"`n"
"`n 中C`n 央P`n 处U`n 理`n 器`n"
$AllProcs = Get-CimInstance Win32_Processor | Select Availability,CurrentClockSpeed,MaxClockSpeed,Name,DeviceID,NumberOfCores,ThreadCount,LoadPercentage,VoltageCaps,VirtualizationFirmwareEnabled
#为多路处理器系统准备的循环
ForEach ($_ in $AllProcs) {
#区分设备运行与供电状态
Switch ($_.Availability) {
2{[string]$prState = "未知"}
3{[string]$prState = "正常"}
4{[string]$prState = "报警中"}
5{[string]$prState = "处于测试状态"}
18{[string]$prState = "暂停中"}
11{[string]$prState = "未安装"}
12{[string]$prState = "安装错误"}
16{[string]$prState = "重新启动中"}
17{[string]$prState = "省电模式: 警告"}
13{[string]$prState = "省电模式: 未知"}
14{[string]$prState = "省电模式: 节能"}
15{[string]$prState = "省电模式: 待机"}
20{[string]$prState = "处理器缺少状态参数"}
21{[string]$prState = "反馈被阻止"}
Default{$prState = $_.Availability}
}
#标题和居中计算
[string]$heading = $_.DeviceID
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"型号: "+$_.Name
"频率: 当前"+$_.CurrentClockSpeed+"Mhz, 最大"+$_.MaxClockSpeed+"Mhz"
"状态: "+$prState
"二级缓存大小: "+$_.L2CacheSize / 1024+"MB"
"三级缓存大小: "+$_.L3CacheSize / 1024+"MB"
"最大工作电压: "+$_.VoltageCaps / 1000+"V"
"当前负载: "+$_.LoadPercentage+"%"
"虚拟化已开: "+$_.VirtualizationFirmwareEnabled
""
}
"`n 内R`n 存A`n 条M`n"
$AllMemos = Get-WmiObject -Class Win32_PhysicalMemory | Select Manufacturer,ConfiguredVoltage,MaxVoltage,PartNumber,Speed,Tag,Capacity
ForEach ($_ in $AllMemos) {
#计算内存容量
[int]$MemSize = $_.Capacity / 1GB
#标题和居中计算
[string]$heading = $_.Tag
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"容量:"+$MemSize+"GB"
"厂商: "+$_.Manufacturer
"型号: "+$_.PartNumber
"频率: "+$_.Speed+"MT/s(Mbps)"
"最大工作电压: "+$_.MaxVoltage / 1000+"V, 目前:"+$_.ConfiguredVoltage / 1000+"V"
""
}
"`n B`n I`n O`n S`n"
$BiosCond = Get-CimInstance Win32_BIOS | Select Status,Name,BIOSVersion,SMBIOSBIOSVersion,ReleaseDate
"名称: "+$BiosCond.Name
"状况: "+$BiosCond.Status
"安装BIOS版本: "+$BiosCond.BIOSVersion
"发行日期: "+$BiosCond.ReleaseDate
"系统用BIOS版本: "+$BiosCond.SMBIOSBIOSVersion+"`n"
"注:MSI微星BIOS版号写作如7C91vA9的数字;其中vA9代表Version A.90或其它数字"
"`n 图G`n 形P`n 处U`n 理`n 器`n"
$GPUCond = Get-WMIObject -Class Win32_VideoController | Select DeviceID,Availability,Name,DriverVersion,DriverDate,VideoModeDescription,CurrentBitsPerPixel
#为多显卡系统准备的循环
ForEach ($_ in $GPUCond) {
#区分设备运行与供电状态
Switch ($_.Availability) {
2{[string]$prState = "未知"}
3{[string]$prState = "正常"}
4{[string]$prState = "报警中"}
5{[string]$prState = "处于测试状态"}
18{[string]$prState = "暂停中"}
11{[string]$prState = "未安装"}
12{[string]$prState = "安装错误"}
16{[string]$prState = "重新启动中"}
17{[string]$prState = "省电模式: 警告"}
13{[string]$prState = "省电模式: 未知"}
14{[string]$prState = "省电模式: 节能"}
15{[string]$prState = "省电模式: 待机"}
20{[string]$prState = "处理器缺少状态参数"}
21{[string]$prState = "反馈被阻止"}
Default{$prState = $_.Availability}
}
#标题和居中计算
[string]$heading = $_.DeviceID+": "+$_.Name
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"状态: $prState"
"驱动: Ver"+$_.DriverVersion+", 发布于"+$_.DriverDate
"显示方案: "+$_.VideoModeDescription
"显示位深: "+$_.CurrentBitsPerPixel+"bit"
}
"`n 物Physical`n 理`n 硬Disk`n 盘`n"
$DiskPhc = Get-Disk | Select DiskNumber,PartitionStyle,HealthStatus,FirmwareVersion,FriendlyName,SerialNumber,Size,AllocatedSize,Location
ForEach ($_ in $DiskPhc) {
#标题和居中计算
[string]$heading = "盘"+$_.DiskNumber+": "+$_.FriendlyName
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"分区表: "+$_.PartitionStyle
"序列号: "+$_.SerialNumber
"固件版本: "+$_.FirmwareVersion
"设定容量: {0:n0}GB" -f($_.AllocatedSize / 1GB)
"实际容量: {0:n0}GB" -f($_.Size / 1GB)
"健康状况: "+$_.HealthStatus
"接口位置: "+$_.Location
""
}
"`n 逻Logical`n 辑`n 磁Disk`n 盘`n"
$DiskLgc = Get-WMIObject -Class Win32_LogicalDisk | Select FileSystem,DeviceID,Description,Size,FreeSpace,VolumeName
ForEach ($_ in $DiskLgc) {
if (!$_.FileSystem) {$DriveSys = "Not Available"}
else {$DriveSys = $_.FileSystem}
#标注空的逻辑磁盘
if (!$_.Size) {$Capacity = "不可用(N/A)"; $DiskSpace = "不可用(N/A)"}
else {
$Capacity = "{0:n1}GB" -f($_.Size / 1GB)
$DiskSpace ="{0:n1}GB" -f($_.FreeSpace / 1GB)
}
#标题和居中计算
[string]$heading = "$DiskType"+$_.DeviceID+" "+$_.DiskNumber+$_.VolumeName
[int]$eCenter = $tCenter - $heading.Length/2
#输出标题和内容
"-"*$eCenter+$heading+"-"*$eCenter
"磁盘类型: "+$_.Description
"文件系统: $DriveSys"
"容量: $Capacity"
"剩余容量: $DiskSpace"
""
}
"`n U`n S`n B`n"
Get-PnpDevice -Class USB -FriendlyName *USB* -Status OK `
| Sort-Object -Unique FriendlyName `
| Format-Table -AutoSize @{l='本机的USB设备';e='FriendlyName'},@{l='硬件实例ID';e='InstanceId'}
Get-PnpDevice -Class USB -FriendlyName *USB* -Status Unknown `
| Sort-Object -Unique FriendlyName `
| Format-Table -AutoSize @{l='未知的USB设备(系统迁徙或旧设备残留)';e='FriendlyName'},@{l='硬件实例ID';e='InstanceId'}
if ($?) {"Get-PnpDevice 检测到未知设备残留,可以使用SPOOCQ - ghostbuster清理`n"} else {"Get-PnpDevice 未检测到残留,系统很干净哦`n"}
"`n AMD 驱`n Intel 动`n NVIDIA"
Get-WmiObject Win32_PnPSignedDriver `
| Select-Object DeviceName,DriverVersion,DriverDate `
| Where-Object {($_.DriverDate -ne $null) -and $_.DeviceName -cmatch 'AMD' -or $_.DeviceName -cmatch 'Radeon' -or $_.DeviceName -cmatch 'Intel' -or $_.DeviceName -cmatch 'NVIDIA'} `
| Sort-Object -Unique DriverDate `
| Format-Table -AutoSize @{l='硬件';e='DeviceName'},@{l='驱动版本';e='DriverVersion';a='Right'},@{l='编译日期';e={(Get-WmiObject -Class Win32_OperatingSystem).ConvertToDateTime($_.DriverDate).ToString('yyyy年MM月dd日')};a='Right'} -DisplayError
"`n AMD 软`n Intel 件`n NVIDIA"
Get-WmiObject -Class Win32_Product `
| Select-Object Name,Version `
| Where-Object {$_.Name -cmatch 'AMD' -or $_.Name -cmatch 'Intel' -or $_.Name -cmatch 'NVIDIA'} `
| Sort-Object -Unique Version `
| Format-Table -Autosize @{l='软件';e='Name'},@{l='软件版本';e='Version';a='Right'} -DisplayError
}
搭配下方的Get-myPC.psd1(放于同目录), 用Import-Module Get-myPC.psm1
; Get-myPC
运行。
清单文件译自Manifest file,用于限制最低引擎版本(新PowerShell加的参数在旧版没有),锚定函数运行所需的文件(否则要自己写检测功能),注明版权和来源等方便大体积,多文件函数模组用的。以下主要为了提供例子方便后来人照搬了,正常直接用上面那段就够了。
以下清单通过New-ModuleManifest Get-myPC.psd1
生成源,再修改一些默认值就写出来了。由于系统语言是中文,所以才会给出中文的清单:
#
# 模块“Get-myPC”的模块清单
#
# 生成者: iAvoe ([email protected])
#
# 生成时间: 2022/2/15
#
@{
# 与此清单关联的脚本模块或二进制模块文件。
RootModule = 'Get-myPC.psm1'
# 此模块的版本号。
ModuleVersion = '2.0'
# 支持的 PSEditions
# CompatiblePSEditions = @()
# 用于唯一标识此模块的 ID
GUID = '8d011647-95d5-4fca-ac7e-7cae5f9d74de'
# 此模块的作者
Author = 'iAvoe ([email protected])'
# 此模块所属的公司或供应商
CompanyName = 'Nazorip'
# 此模块的版权声明
Copyright = '(c) 2022 iAvoe ([email protected])。保留所有权利。'
# 此模块所提供功能的说明
Description = '使用Get-myPC函数获取计算机名,Windows版本,Windows体验指数跑分,以及主板,处理器,内存条,BIOS,显卡,物理磁盘和逻辑磁盘的详细信息。'
# 此模块要求的 Windows PowerShell 引擎的最低版本
PowerShellVersion = '2.0'
# 此模块要求的 Windows PowerShell 主机的名称
# PowerShellHostName = ''
# 此模块要求的 Windows PowerShell 主机的最低版本
# PowerShellHostVersion = ''
# 此模块要求使用的最低 Microsoft .NET Framework 版本。此先决条件仅对 PowerShell Desktop 版本有效。
# DotNetFrameworkVersion = ''
# 此模块要求使用的最低公共语言运行时(CLR)版本。此先决条件仅对 PowerShell Desktop 版本有效。
# CLRVersion = ''
# 此模块要求的处理器体系结构(无、X86、Amd64)
# ProcessorArchitecture = ''
# 必须在导入此模块之前先导入全局环境中的模块
# RequiredModules = @()
# 导入此模块之前必须加载的程序集
# RequiredAssemblies = @()
# 导入此模块之前运行在调用方环境中的脚本文件(.ps1)。
# ScriptsToProcess = @()
# 导入此模块时要加载的类型文件(.ps1xml)
# TypesToProcess = @()
# 导入此模块时要加载的格式文件(.ps1xml)
# FormatsToProcess = @()
# 将作为 RootModule/ModuleToProcess 中所指定模块的嵌套模块导入的模块
# NestedModules = @()
# 要从此模块中导出的函数。为了获得最佳性能,请不要使用通配符,不要删除该条目。如果没有要导出的函数,请使用空数组。
FunctionsToExport = @('Get-myPC')
# 要从此模块中导出的 cmdlet。为了获得最佳性能,请不要使用通配符,不要删除该条目。如果没有要导出的 cmdlet,请使用空数组。
CmdletsToExport = @()
# 要从此模块中导出的变量
VariablesToExport = '*'
# 要从此模块中导出的别名。为了获得最佳性能,请不要使用通配符,不要删除该条目。如果没有要导出的别名,请使用空数组。
AliasesToExport = @()
# 要从此模块导出的 DSC 资源
# DscResourcesToExport = @()
# 与此模块一起打包的所有模块的列表
# ModuleList = @()
# 与此模块一起打包的所有文件的列表
FileList = @('Get-myPC.psm1')
# 要传递到 RootModule/ModuleToProcess 中指定的模块的专用数据。这还可能包含 PSData 哈希表以及 PowerShell 使用的其他模块元数据。
PrivateData = @{
PSData = @{
# 应用于此模块的标记。这些标记有助于在联机库中执行模块发现。
# Tags = @()
# 指向此模块的许可证的 URL。
# LicenseUri = ''
# 指向此项目的主网站的 URL。
# ProjectUri = ''
# 指向表示此模块的图标的 URL。
# IconUri = ''
# 此模块的 ReleaseNotes
# ReleaseNotes = ''
} # PSData 哈希表末尾
} # PrivateData 哈希表末尾
# 此模块的 HelpInfo URI
# HelpInfoURI = ''
# 从此模块中导出的命令的默认前缀。可以使用 Import-Module -Prefix 覆盖默认前缀。
# DefaultCommandPrefix = ''
}
Powershell做不到实时监测CPU每个线程的占用,也不能测试内存稳定性。实现方法太难...
PS: 其实吧,这东西的最大用处还是在硬件论坛提问的时候生成个硬件信息报告...
更新了供电状态powerstate参数, 以及CPU L2, L3缓存大小. 那么就这样
打赏信息
在线丢人,求个打赏,支持一下T_T