PowerShell Обновление драйверов компьютера - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь создать скрипт 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.

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

1 Ответ

0 голосов
/ 06 марта 2019

Ваш скрипт выбирает драйверы, но затем ничего не делает с результатом ..

Я думаю, что это должно сделать это:

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 объектам. Таким образом, сравнение будет правильным, а не сравнение строк.

...