怎么用脚本获取系统安装时间

wen 实用脚本 2

本文目录导读:

怎么用脚本获取系统安装时间

  1. Windows 系统
  2. Linux 系统
  3. macOS 系统
  4. 跨平台 Python 脚本
  5. 注意事项
  6. 推荐使用

获取系统安装时间的方法因操作系统不同而异,以下是几种常见系统的脚本获取方式:

Windows 系统

PowerShell 脚本

# 方法1:使用Win32_OperatingSystem
Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty InstallDate
# 方法2:格式化显示
$os = Get-WmiObject -Class Win32_OperatingSystem
$installDate = [System.Management.ManagementDateTimeConverter]::ToDateTime($os.InstallDate)
Write-Host "系统安装时间: $installDate"
# 方法3:使用CIM(推荐)
Get-CimInstance -Class Win32_OperatingSystem | Select-Object -ExpandProperty InstallDate

批处理脚本(cmd)

@echo off
wmic os get installdate

Linux 系统

Bash 脚本

#!/bin/bash
# 方法1:查看根文件系统创建时间(较准确)
stat -c %w /
# 方法2:查看/var/log/installer目录(Ubuntu)
stat /var/log/installer | grep Modify | awk '{print $2,$3}'
# 方法3:使用lsblk
lsblk -o NAME,MOUNTPOINT,LABEL,FSTYPE | grep '/$'
# 方法4:dumpe2fs(需要root权限)
dumpe2fs -h $(df / | tail -1 | awk '{print $1}') 2>/dev/null | grep "Filesystem created"

macOS 系统

Shell 脚本

#!/bin/bash
# 方法1:查看根文件系统创建时间
stat -f "%Sm" /
# 方法2:查看系统日志(macOS 10.13+)
syslog -F '$Time' | grep -m1 "com.apple.opendirectoryd" | head -1
# 方法3:使用dscl
dscl . -read /Local/Default/Users | grep -E "^(Create|Password)Timestamp"

跨平台 Python 脚本

import platform
import subprocess
import re
from datetime import datetime
def get_install_date():
    system = platform.system()
    if system == "Windows":
        import wmi
        c = wmi.WMI()
        os_info = c.Win32_OperatingSystem()[0]
        install_date = os_info.InstallDate
        # 转换为datetime对象
        if install_date:
            year = int(install_date[:4])
            month = int(install_date[4:6])
            day = int(install_date[6:8])
            return datetime(year, month, day)
    elif system == "Linux":
        # 尝试多种方法
        try:
            result = subprocess.run(['stat', '-c', '%w', '/'], 
                                 capture_output=True, text=True)
            install_date = result.stdout.strip()
            return install_date
        except:
            try:
                with open('/var/log/installer/syslog', 'r') as f:
                    for line in f:
                        if 'Ubuntu' in line or 'install' in line.lower():
                            return line[:15]
            except:
                pass
    elif system == "Darwin":  # macOS
        result = subprocess.run(['stat', '-f', '%Sm', '/'], 
                               capture_output=True, text=True)
        return result.stdout.strip()
    return None
install_date = get_install_date()
if install_date:
    print(f"系统安装时间: {install_date}")
else:
    print("无法获取系统安装时间")

注意事项

  1. Windows系统:WMI方法通常会返回UTC时间,需要转换为本地时间
  2. Linux系统:不同发行版的方法可能不同,Ubuntu/Debian 有安装日志,其他发行版可能需要从根文件系统创建时间推断
  3. 权限问题:某些方法需要管理员/root权限
  4. 准确性:这些方法大多给出近似值,并非100%精确

推荐使用

  • Windows:PowerShell的 Get-WmiObject 方法
  • Linuxstat -c %w /(支持ext4/xfs等文件系统)
  • macOSstat -f "%Sm" /

选择哪种方法取决于你的操作系统和实际需求。

抱歉,评论功能暂时关闭!