Да, да, заголовок от бога. ;) Это не какой-то rocket science, но просто, вчера, в телеграм канале https://t.me/MicrosoftRus, заикнулся про кусок скрипта, а раз проголосовало больше 100 человек, то надо выложить.
На самом деле, это часть одного большего скрипта, который качает много чего еще сам. Я же просто выкладываю его маленькую часть. ;)
Главная фишка, что он просто забирает всегда последнюю версию, ничего придумывать не надо и складывает на c:\download
Можно дополнить дальше созданием приложения в SCCM и деплоем на тестовую коллекцию и вы забываете обо всем, как он у меня и делает, но это совсем другая история….
Да, у нас же еще есть System Center Updates Publisher (SCUP). Ну, его нафиг, я и без него отлично справляюсь. ;) Если вам интересно, то я могу и остальное повыкладывать, там для разного ПО есть. Пишите в комментариях и подписывайтесь на телеграм — https://t.me/MicrosoftRus, а если нет телеграма, то можно на страницу в фейсбуке — https://www.facebook.com/itproru/
Берем код, запускаем, профит.
Кстати, еще, для хейтеров: Adam не гордится стилем программирования, используемым в этом примере, но это работает. Как я хочу сказать: «Если это работает и это сделано тупо, то это не тупо». (Adam Neat)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
$tempDownloadFolder = "\download\temp" $downloadFolder = "\download" $releases = "https://get.adobe.com/en/flashplayer/" # URL to for GetLatest # $HTML = Invoke-WebRequest -Uri $releases $try = ($HTML.ParsedHtml.getElementsByTagName('p') | Where{ $_.className -eq 'NoBottomMargin' } ).innerText $try = $try -split "\r?\n" $try = $try[0] -replace ' ', ' = ' $try = ConvertFrom-StringData -StringData $try $CurrentVersion = ( $try.Version ) $majorVersion = ([version] $CurrentVersion).Major # Flash Player Active X $softwareAdobeUrl = @() $softwareAdobeUrl += "https://download.macromedia.com/pub/flashplayer/pdc/${CurrentVersion}/install_flash_player_${majorVersion}_active_x.msi" $softwareAdobeUrl += "https://download.macromedia.com/get/flashplayer/pdc/${CurrentVersion}/install_flash_player_${majorVersion}_plugin.msi" $softwareAdobeUrl += "https://download.macromedia.com/pub/flashplayer/pdc/${CurrentVersion}/install_flash_player_${majorVersion}_ppapi.msi" $CurrentVersion $softwareAdobeUrl Write-Host $true #$_.New = $CurrentVersion # create folder, download msi New-Item -ItemType Directory -Path "$downloadFolder\adobe $CurrentVersion\" -Force $targetDir = "$downloadFolder\adobe $CurrentVersion\" function DownloadFile([Object[]] $sourceFiles,[string]$targetDirectory) { $wc = New-Object System.Net.WebClient $sourceFiles = $softwareAdobeUrl foreach ($sourceFile in $sourceFiles){ $sourceFileName = $sourceFile.SubString($sourceFile.LastIndexOf('/')+1) $targetFileName = $targetDirectory + $sourceFileName $wc.DownloadFile($sourceFile, $targetFileName) Write-Host "Downloaded $sourceFile to file location $targetFileName" } } DownloadFile $softwareAdobeUrl $targetDir |
Доброго времени суток Антон.
Было бы просто замечательно если бы ты продолжил выкладывать свои наработки! особенно интересует автоматизация создания приложения в SCCM средствами powershell и развёртывания на тестовые коллекции.
Спасибо!
Добрый день, запустил и получил ошибку
Имя «Invoke-WebRequest» не распознано как имя командлета, функции, файла скрипта или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
C:\Code\БезИмени2.ps1:7 знак:28
+ $HTML = Invoke-WebRequest <<<< -Uri $releases
+ CategoryInfo : ObjectNotFound: (Invoke-WebRequest:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Нельзя вызвать метод для выражения со значением NULL.
C:\Code\БезИмени2.ps1:8 знак:48
+ $try = ($HTML.ParsedHtml.getElementsByTagName <<<< ('p') | Where{ $_.className -eq 'NoBottomMargin' } ).innerText
+ CategoryInfo : InvalidOperation: (getElementsByTagName:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
ConvertFrom-StringData : Строка данных "System.Collections.Hashtable" указана в формате, отличном от следующего: "имя=значение".
C:\Code\БезИмени2.ps1:11 знак:33
+ $try = ConvertFrom-StringData <<<< -StringData $try
+ CategoryInfo : InvalidOperation: (:) [ConvertFrom-StringData], PSInvalidOperationException
+ FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.ConvertFromStringDataCommand
https://download.macromedia.com/pub/flashplayer/pdc//install_flash_player__active_x.msi
https://download.macromedia.com/get/flashplayer/pdc//install_flash_player__plugin.msi
https://download.macromedia.com/pub/flashplayer/pdc//install_flash_player__ppapi.msi
что показывает $PSVersionTable ?
Разобрался, не хватало обновления KB2506143 :)
Не пойму зачем костыли, если есть SCUP?
Доброго времени суток. А не подскажите как Вы определяете путь к дистрибутивам к MSIкам в частности? Я бы хотел подобное написать для Acrobat Reader DC. Или может уже знаете данный путь?
Доброго времени суток. Большое спасибо за скрипт. Задолбался искать эти МСИшки. Очень интересен конечно и «полный» скрипт.
Спасибо! Очень круто, работает)