PowerShell 更新计算机的驱动程序
PowerShell To update Drivers of a computer
我正在尝试构建一个带有逻辑的 powershell 脚本来识别当前安装的驱动程序版本。
如果相同(与我尝试安装的相同或更新)跳过安装。
如果它低于我正在尝试安装的版本,请执行带有静默参数的 setup.exe。
$NetworkName = Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion | where {$_.devicename -eq 'Intel(R) Ethernet Connection (7) I219-LM'}
If ($_.Driverversion -ge '12.17.8.9') {
Write-Output "Version is Current"
return 0
} Else {
start-process -filepath "\servername\share\share\Dell\Drivers\Dell 3630\Network Card\setup.exe" -argumentlist '/s' -Wait -NoNewWindow
}
这有效并安装了最新的驱动程序,但它不会跳过已经安装最新版本的计算机。
任何帮助将不胜感激,我做了很多谷歌搜索,但由于我仍在学习,我很确定它只是一个新手忽视。
我也在 technet 上发布了我的问题。
您的脚本选择了驱动程序,但随后对结果不做任何处理..
我认为应该这样做:
Get-WmiObject Win32_PnPSignedDriver |
Where-Object {$_.devicename -eq 'Intel(R) Ethernet Connection (7) I219-LM'} |
ForEach-Object {
if ([Version]$_.Driverversion -ge [Version]'12.17.8.9') {
Write-Output "Version is Current"
# return from a function ?
# return 0
# exit script with exitcode?
# exit 0
}
else {
Start-Process -FilePath "\servername\share\share\Dell\Drivers\Dell 3630\Network Card\setup.exe" -ArgumentList '/s' -Wait -NoNewWindow
}
}
我还通过将字符串转换为 System.Version
对象来更改对驱动程序版本的检查。这样比较将是正确的,而不是比较字符串。
我正在尝试构建一个带有逻辑的 powershell 脚本来识别当前安装的驱动程序版本。
如果相同(与我尝试安装的相同或更新)跳过安装。
如果它低于我正在尝试安装的版本,请执行带有静默参数的 setup.exe。
$NetworkName = Get-WmiObject Win32_PnPSignedDriver| select devicename, driverversion | where {$_.devicename -eq 'Intel(R) Ethernet Connection (7) I219-LM'}
If ($_.Driverversion -ge '12.17.8.9') {
Write-Output "Version is Current"
return 0
} Else {
start-process -filepath "\servername\share\share\Dell\Drivers\Dell 3630\Network Card\setup.exe" -argumentlist '/s' -Wait -NoNewWindow
}
这有效并安装了最新的驱动程序,但它不会跳过已经安装最新版本的计算机。
任何帮助将不胜感激,我做了很多谷歌搜索,但由于我仍在学习,我很确定它只是一个新手忽视。
我也在 technet 上发布了我的问题。
您的脚本选择了驱动程序,但随后对结果不做任何处理..
我认为应该这样做:
Get-WmiObject Win32_PnPSignedDriver |
Where-Object {$_.devicename -eq 'Intel(R) Ethernet Connection (7) I219-LM'} |
ForEach-Object {
if ([Version]$_.Driverversion -ge [Version]'12.17.8.9') {
Write-Output "Version is Current"
# return from a function ?
# return 0
# exit script with exitcode?
# exit 0
}
else {
Start-Process -FilePath "\servername\share\share\Dell\Drivers\Dell 3630\Network Card\setup.exe" -ArgumentList '/s' -Wait -NoNewWindow
}
}
我还通过将字符串转换为 System.Version
对象来更改对驱动程序版本的检查。这样比较将是正确的,而不是比较字符串。