自动安装驱动脚本说明
该 PowerShell 脚本用于在 Windows 设备上执行以下任务:
适用于大批量重新安装不同型号surface的系统
配合无人值守文件使用更佳
脚本功能
1. 获取设备型号
该脚本通过 Get-CimInstance 命令获取计算机系统的型号,并移除其中的空格。例如,将 "Surface Pro 9" 转换为 "SurfacePro9"。
2. 查找特定的卷标
默认查找surface的卷
可以修改为别的
脚本会查找标记为 "surface" 的卷,并返回卷的子目录路径(例如 D:\drives)。
3. 根据系统区域设置确定备份文件夹名称
脚本会根据当前系统的区域设置(简体中文、繁体中文、英文等)返回不同的文件夹名称。中文系统返回“中文系统下返回的文件夹”,非中文系统返回“英文系统下返回的文件夹”。
4. 复制文件夹到桌面
脚本使用 robocopy 命令将指定的文件夹复制到当前用户的桌面,并保持文件权限。包括子目录和文件的复制。
5. 获取操作系统版本
根据 WMI 查询操作系统版本,通过返回值判断当前操作系统为 Windows 11 或 Windows 10。
6. 获取处理器平台
脚本通过 WMI 获取处理器信息,并判断是 AMD 还是 Intel 处理器。
7. 构建驱动程序路径
脚本会根据设备型号、操作系统版本、处理器平台构建对应的驱动程序路径,并检查文件是否存在。如果未找到相应驱动,脚本会尝试查找备选操作系统版本的驱动。
8. 复制并安装驱动程序
如果找到驱动程序路径,脚本会将驱动程序文件复制到桌面,并使用 msiexec 执行静默安装。安装过程不会显示任何界面,并且在安装后不会自动重启计算机。
9. 清理安装包
安装完成后,脚本会删除安装包。
10. 重启计算机
安装完成后,脚本会强制重启计算机以完成驱动程序的生效。
具体代码
# 主脚本执行(包含错误处理)
try {
# 步骤1: 获取设备型号
$deviceModel = Get-DeviceModel
# 非 Surface 设备直接退出(0 表示成功)
if ($deviceModel -notlike "Surface*") {
exit 0
}
# 步骤2: 获取 Microsoft 卷的驱动路径
$driverBasePath = Get-MicrosoftVolume
# 提取 Microsoft 卷的根目录
$microsoftRoot = Split-Path -Path $driverBasePath -Parent
# 步骤3: 获取系统信息
$osVersion = Get-OSVersion
$processorPlatform = Get-ProcessorPlatform
# 步骤4: 复制备份文件夹到桌面
$backupFolder = Get-BackupFolderName
Copy-FolderToDesktop -SourcePath $microsoftRoot -FolderName $backupFolder
# 步骤5: 复制 checkTest 文件夹到桌面
Copy-FolderToDesktop -SourcePath $microsoftRoot -FolderName "checkTest"
# 步骤6: 获取匹配的驱动程序路径
$sourceDriver = Get-DriverPath -BasePath $driverBasePath -Model $deviceModel -OSVersion $osVersion -Platform $processorPlatform
# 步骤7: 复制驱动安装包到桌面
$desktopPath = [Environment]::GetFolderPath('Desktop')
$destDriver = Join-Path -Path $desktopPath -ChildPath (Split-Path -Path $sourceDriver -Leaf)
Copy-Item -Path $sourceDriver -Destination $destDriver -Force
# 步骤8: 静默安装驱动程序
# /i - 安装程序
# /quiet - 无界面模式
# /norestart - 安装完成后不自动重启
$installArgs = "/i `"$destDriver`" /quiet /norestart"
Start-Process msiexec.exe -ArgumentList $installArgs -Wait -NoNewWindow
# 步骤9: 清理安装包
Remove-Item -Path $destDriver -Force
# 步骤10: 强制重启计算机
Restart-Computer -Force
}
catch {
# 任何错误返回非零退出码(1 表示失败)
exit 1
}
使用说明x
-
可配合无人值守文件
将脚本嵌入到无人值守的用户第一次登录执行脚本那一块即可
-
脚本依赖项
- PowerShell 版本:
5.0 或更高。
- 需要管理员权限运行脚本。
- 必须启用 Windows Defender 服务(如果使用排除项)。
-
输入和输出
- 脚本在执行过程中会提示错误或操作信息。
- 脚本会自动创建桌面文件夹(如备份文件夹、驱动安装包等)。
-
错误处理
如果脚本执行过程中出现任何错误(如文件路径无效或驱动安装失败),脚本将返回非零退出码。
示例执行流程
# 获取设备型号
Device Model: SurfacePro9
# 查找 Microsoft 卷
Volume Path: D:\drives
# 获取系统区域设置
System Locale: zh-CN
# 获取操作系统版本
OS Version: Windows 11
# 获取处理器平台
Processor Platform: Intel
# 复制备份文件夹到桌面
Backup Folder: 中文系统下返回的文件夹
# 安装驱动程序
Installing driver: SurfacePro9_win11.msi
# 清理安装包
Removing installation package
# 重启计算机
Restarting the computer...
注意事项
- 该脚本假定设备为 Surface 系列设备,其他设备型号将跳过执行。
- 若操作系统为 Windows 10 或 11,脚本会自动选择相应版本的驱动程序。
- 运行该脚本前,请确保已经备份重要数据,以防不测。
- 驱动安装和系统重启可能会影响当前工作,请提前保存文件并关闭其他应用程序。
下载
蓝奏
|