使用 Powershell 以方便的格式列出系统信息
Listing system information in convenient format using Powershell
我希望有人能帮助我。我目前正在生成一份计算机日期列表,以查看哪些需要更换(>3 年)。
是否可以在 csv 或 excel 中回显此内容?
我制作了以下片段:
$env:COMPUTERNAME
$ComputerSystem = Get-WmiObject -Class Win32_ComputerSystem
$BIOS = Get-WmiObject -Class Win32_BIOS
$BIOSageInYears = (New-TimeSpan -Start ($BIOS.ConvertToDateTime($BIOS.releasedate).ToShortDateString()) -End $(Get-Date)).Days / 365
$OperatingSystem = Get-WmiObject -Class Win32_OperatingSystem
$OSInstallDate = ($OperatingSystem.ConvertToDateTime($OperatingSystem.InstallDate).ToShortDateString())
$System.SerialNumber
$ComputerSystem.Manufacturer
$ComputerSystem.Model
($BIOS.ConvertToDateTime($BIOS.releasedate).ToShortDateString())
$BIOSageInYears
$OS=@(Get-ChildItem -Path HKLM:\System\Setup\Source* | ForEach-Object {Get-ItemProperty -Path Registry::$_}; Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion')
$OS | Select-Object ProductName, ReleaseID, CurrentBuild, @{Name='InstallDate'; Expression={[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($_.InstallDate))}} | Sort-Object "InstallDate"
这给了我以下输出:
PS U:\> U:\build.ps1
WS0***MH
Hewlett-Packard
HP Z440 Workstation
08-11-2017
3.81095890410959
ProductName ReleaseId CurrentBuild InstallDate
----------- --------- ------------ -----------
Windows 10 Pro for Workstations 1709 16299 19-04-2018 13:38:08
Windows 10 Pro for Workstations 1803 17134 03-05-2018 10:25:24
Windows 10 Pro for Workstations 1909 18363 05-07-2019 10:52:48
Windows 10 Pro for Workstations 2009 19043 14-06-2021 17:11:32
所以我想要输出中的第一个安装日期和日期(以年为单位)。目前它只适用于 bios 日期。
我只需要这个
WS0***MH
Hewlett-Packard
HP Z440 Workstation
19-04-2018 13:38:08 (first installed date - NOT Bios)
3.81095890410959 (age first installed - NOT Bios)
Windows10 的第一个设置日期很难以可靠的方式找到。一种方法是检查客户端缓存文件夹的修改日期...
$ComputerSystem = Get-CimInstance -Class Win32_ComputerSystem
$SystemInfo = New-Object PSCustomObject | Select ComputerName,Manufacturer,Model,FirstSetup,SetupAge
$SystemInfo.ComputerName = $env:COMPUTERNAME
$SystemInfo.Manufacturer = $ComputerSystem.Manufacturer
$SystemInfo.Model = $ComputerSystem.Model
$SystemInfo.FirstSetup = (get-item c:\windows\csc).LastWriteTime
$SystemInfo.SetupAge = ((get-date) - $SystemInfo.FirstSetup).Days / 365
$SystemInfo | Export-Csv SystemInfo.csv
您可能不想将 $SystemInfo.FirstSetup
的输出格式更改为系统区域设置以外的格式。
我希望有人能帮助我。我目前正在生成一份计算机日期列表,以查看哪些需要更换(>3 年)。
是否可以在 csv 或 excel 中回显此内容?
我制作了以下片段:
$env:COMPUTERNAME
$ComputerSystem = Get-WmiObject -Class Win32_ComputerSystem
$BIOS = Get-WmiObject -Class Win32_BIOS
$BIOSageInYears = (New-TimeSpan -Start ($BIOS.ConvertToDateTime($BIOS.releasedate).ToShortDateString()) -End $(Get-Date)).Days / 365
$OperatingSystem = Get-WmiObject -Class Win32_OperatingSystem
$OSInstallDate = ($OperatingSystem.ConvertToDateTime($OperatingSystem.InstallDate).ToShortDateString())
$System.SerialNumber
$ComputerSystem.Manufacturer
$ComputerSystem.Model
($BIOS.ConvertToDateTime($BIOS.releasedate).ToShortDateString())
$BIOSageInYears
$OS=@(Get-ChildItem -Path HKLM:\System\Setup\Source* | ForEach-Object {Get-ItemProperty -Path Registry::$_}; Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion')
$OS | Select-Object ProductName, ReleaseID, CurrentBuild, @{Name='InstallDate'; Expression={[timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($_.InstallDate))}} | Sort-Object "InstallDate"
这给了我以下输出:
PS U:\> U:\build.ps1
WS0***MH
Hewlett-Packard
HP Z440 Workstation
08-11-2017
3.81095890410959
ProductName ReleaseId CurrentBuild InstallDate
----------- --------- ------------ -----------
Windows 10 Pro for Workstations 1709 16299 19-04-2018 13:38:08
Windows 10 Pro for Workstations 1803 17134 03-05-2018 10:25:24
Windows 10 Pro for Workstations 1909 18363 05-07-2019 10:52:48
Windows 10 Pro for Workstations 2009 19043 14-06-2021 17:11:32
所以我想要输出中的第一个安装日期和日期(以年为单位)。目前它只适用于 bios 日期。
我只需要这个
WS0***MH
Hewlett-Packard
HP Z440 Workstation
19-04-2018 13:38:08 (first installed date - NOT Bios)
3.81095890410959 (age first installed - NOT Bios)
Windows10 的第一个设置日期很难以可靠的方式找到。一种方法是检查客户端缓存文件夹的修改日期...
$ComputerSystem = Get-CimInstance -Class Win32_ComputerSystem
$SystemInfo = New-Object PSCustomObject | Select ComputerName,Manufacturer,Model,FirstSetup,SetupAge
$SystemInfo.ComputerName = $env:COMPUTERNAME
$SystemInfo.Manufacturer = $ComputerSystem.Manufacturer
$SystemInfo.Model = $ComputerSystem.Model
$SystemInfo.FirstSetup = (get-item c:\windows\csc).LastWriteTime
$SystemInfo.SetupAge = ((get-date) - $SystemInfo.FirstSetup).Days / 365
$SystemInfo | Export-Csv SystemInfo.csv
您可能不想将 $SystemInfo.FirstSetup
的输出格式更改为系统区域设置以外的格式。