@Zorichok

Загрузка skype средствами PowerShell?

Задача: сделать политику которая будет устанавливать и обновлять Skype для рабочего стола.

разбил задачу на 3 условные подзадачи:
1) Установка
2) Загрузка новых версий.
3) установка обновлений

1 и 3 задачу можно решить с помощью батника вот его код

set VERSION=8.27.0.85
if %PROCESSOR_ARCHITECTURE% == x86 (
  set FILENAME="C:\\Program Files\\Microsoft\\Skype for Desktop\\Skype.exe"
) else (
  set FILENAME="C:\\Program Files (x86)\\Microsoft\\Skype for Desktop\\Skype.exe"
)
wmic datafile where name=%FILENAME% get version | find "%VERSION%"
if ERRORLEVEL 1 \\local.company.com\SHARES\PACKAGES\Skype-%VERSION%.exe /VERYSILENT /NORESTART


читает какая версия установлена если не та запускает тихую установку.

2 подзадача та с которой мне требуется помощь сообщества
В идеале получить имя файла доступного по данной ссылке сравнить с версией имеющейся в наличии и если они отличаются скачать файл с

Как не идеальный но рабочий вариант . Скачать файл с Сохранив его имя .

на данный момент родил такой скрипт
$Url = "https://go.skype.com/windows.desktop.download"
$Path = "D:\1.exe" 
$WebClient = New-Object System.Net.WebClient

$WebClient.DownloadFile($url,$path)


собственно вопрос как в переменную $Path запихнуть имя файла который качаем . Точнее как его получить
  • Вопрос задан
  • 766 просмотров
Решения вопроса 1
@azarij
В меру опытный никто
так можно посмотреть какая версия лежит на сервере без загрузки файла. ну и имя файла. если микрософт чонить изменит в текущем сетапе - код ниже перестанет работать.

$uri = "https://get.skype.com/go/getskype-skypeforwindows"
$request = Invoke-WebRequest -Uri $uri -method Get -MaximumRedirection 0 -ErrorAction SilentlyContinue
$skype_ver_on_server = ($rеquest.headers.location -replace ".*/skype-|\.exe").Trim()
$skype_ver_on_server
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Zorichok Автор вопроса
огромное спасибо за вашу помощь !!!
если кому пригодится выкладываю финальную версию скрипта !!

$PatchScrpts ="D:\SkypeInstal\Final"

# Получаем с сервера актуальную версию СКАЙПА
$uri = "https://get.skype.com/go/getskype-skypeforwindows"
$request = Invoke-WebRequest -Uri $uri -method Get -MaximumRedirection 0 -ErrorAction SilentlyContinue
$skype_ver_on_server = $request.Headers.Location
# Разбираем получинаю строку вычленяем версию !!
$skype_ver_on_server =$skype_ver_on_server -replace ".*/Skype-",""
$skype_ver_on_server =$skype_ver_on_server -replace ".exe",""
# версия хранится в $skype_ver_on_server

#Подгружаем локальную версию
$skype_ver_on_local = Get-Content $PatchScrpts\localver.txt
# Сверяем версии локальюную и полученную с сервера ЕЛИ НЕ РАВНЫ качаем, меняем версию в 2 местах....
if ( $skype_ver_on_local -ne $skype_ver_on_server )
{
# Качаем новую
$Url = "https://go.skype.com/windows.desktop.download"
$Path = $PatchScrpts + "\Skype-"+ $skype_ver_on_server + ".exe"
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($url,$path)

# Меняем в тхт
$skype_ver_on_server | Out-File $PatchScrpts\localver.txt

# Меняем в Батнике
$FileName = $PatchScrpts+"\SkypeInst.Bat"
$FileOriginal = Get-Content $FileName
[String[]]$FileModified = @()
[String]$string = "set VERSION="+$skype_ver_on_server
Foreach ($Line in $FileOriginal){
if ($Line.StartsWith("set VERSION="))
{
$FileModified += $Line.Replace($Line, $string)
} else {
$FileModified += $Line
}

}

Set-Content $fileName $FileModified -Force

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы