PowerShell更新计算机的驱动程序

问题描述 投票:0回答:1

我正在尝试使用逻辑构建一个powershell脚本来识别当前安装的驱动程序版本。

如果它是相同的(我试图安装或更新)跳过安装。

如果它低于我尝试安装的版本,则使用silent参数执行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上发布了我的问题。

https://social.technet.microsoft.com/Forums/windowsserver/en-US/249a930f-0989-4734-bd8b-f30bbbc838ca/powershell-to-update-drivers-of-a-computer?forum=winserverpowershell#445d46ff-aa29-4960-9258-e7504a643aa6

powershell driver
1个回答
0
投票

您的脚本选择驱动程序,但随后对结果不执行任何操作。

我认为应该这样做:

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对象来更改驱动程序版本的检查。这样,比较将是正确的,而不是比较字符串。

© www.soinside.com 2019 - 2024. All rights reserved.