Так получилось, что в компании, которую я обслуживаю, пользователи очень любят вести переписку с контрагентами в Skype, и - что для меня совсем непонятно - обмениваться с ними рабочими файлами в нём же. Я совсем не сторонник обмена файлами в любом IM-мессенджере - для этого есть проверенный и надёжный инструмент - электронная почта, которая на этой компании своя, но - тут проще с пользователями согласиться, ведь обмен сообщениями в Skype - это быстро и удобно, а электронная почта - какая такая почта?
Вопрос в том, что иногда Skype начинает капризничать и отказывается принимать и передавать файлы - а что ещё можно ждать от приложения обмена сообщениями от Microsoft? Пользователям работать становится не так удобно, начинаются вопросы " А почему у меня файлы не принимаются? Надо срочно-важно-прямо сейчас-вчера".
![]() |
Skype сломался... |
Для восстановления работы Skype достаточно в профиле пользователя переименовать папку "%APPDATA%\Microsoft\_Skype for Desktop\" - если всё заработает, а так скорее всего и будет - то потом её можно будет удалить, и перезапустить Skype. Правда, тут возникает ещё один вопрос - пользователь должен помнить логин и пароль, а так бывает далеко не всегда, когда-нибудь я напишу про удобное создание и сохранение паролей к чему угодно.
Итак, решение простое и понятное, осталось сделать его удобным для пользователей, в итоге родился небольшой скрипт на PowerShell, который можно положить в общую папку в локальной сети и ярлык раздать пользователям в удобное место, например, в папку на рабочий стол.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
.SYNOPSIS | |
Скрипт для восстановления работы Skype for desktop - например, когда не передаются файлы. | |
.DESCRIPTION | |
Для восстановления настроек останавливается Skype, переименовывается папка "%APPDATA%\Microsoft\_Skype for Desktop\", запускается Skype. | |
Если есть ранее переименованная папка - удаляем её без предупреждения. | |
Пользователь должен помнить логин и пароль. | |
.EXAMPLE | |
Чтобы скрыть окно PowerShell - можно запускать командой powershell -WindowStyle Hidden -File \\server\share\fix_skype.ps1 | |
.INPUTS | |
.OUTPUTS | |
.NOTES | |
Имя файла: fix_skype.ps1 | |
Автор: Ярошевич Максим (maximyn@gmail.com, yaromax.blogspot.com) | |
Требования: PowerShell V2 over Vista and upper. | |
Copyright 2020: Ярошевич Максим maximyn@gmail.com | |
#> | |
# Выводим окно выбора действий, предупреждаем пользователя | |
# Про окна и обработку кнопок https://winitpro.ru/index.php/2018/10/02/uvedomleniya-polzovateley-is-powershell/ | |
# Проверяем наличие Skype для рабочего стола, если нет - выводим сообщение и завершаем работу. | |
$isfile = Test-Path -Path "C:\Program Files (x86)\Microsoft\Skype for Desktop\Skype.exe" | |
if ($null -eq $isfile) { | |
[system.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null | |
$balloon = New-Object System.Windows.Forms.NotifyIcon | |
$path = Get-Process -id $pid | Select-Object -ExpandProperty Path | |
$icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path) | |
$balloon.Icon = $icon | |
# значок, текст и заголовок | |
$balloon.BalloonTipIcon = 'Info' | |
$balloon.BalloonTipText = 'На этом компьютере не установлен Skype для рабочего стола, завершена работа скрипта' | |
$balloon.BalloonTipTitle = 'Skype для рабочего стола не установлен.' | |
$balloon.Visible = $true | |
$balloon.ShowBalloonTip(10000) | |
exit | |
} | |
$wshell = New-Object -ComObject Wscript.Shell | |
$Output = $wshell.Popup("Восстановление работы Skype для рабочего стола. `n`n Для продолжения нажмите Да, для выхода Нет. `n `n Возможно, после запуска Skype надо будет ввести логин и пароль.", 0, "Восстановление работы Skype для рабочего стола", 4 + 32) | |
# Проверяем, запущен ли Skype | |
$skype = Get-Process -Name Skype -ErrorAction SilentlyContinue | |
# Если нажато "Да" - завершаем Skype, переименовываем папку, выводим сообщение в трее. | |
# Нажатие "Нет" не обрабатывается, скрипт просто завершает работу. | |
if ($Output -eq 6) { | |
if ($null -ne $skype) { | |
Stop-Process -Name Skype -ErrorAction SilentlyContinue | |
} | |
if (Test-Path -Path "$env:APPDATA\Microsoft\_Skype for Desktop\") { | |
Remove-Item "$env:APPDATA\Microsoft\_Skype for Desktop\" | |
} | |
Rename-Item "$env:APPDATA\Microsoft\Skype for Desktop\" "_Skype for Desktop" -ErrorAction SilentlyContinue | |
& "C:\Program Files (x86)\Microsoft\Skype for Desktop\Skype.exe" | |
[system.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms') | Out-Null | |
$balloon = New-Object System.Windows.Forms.NotifyIcon | |
$path = Get-Process -id $pid | Select-Object -ExpandProperty Path | |
$icon = [System.Drawing.Icon]::ExtractAssociatedIcon($path) | |
$balloon.Icon = $icon | |
# значок, текст и заголовок | |
$balloon.BalloonTipIcon = 'Info' | |
$balloon.BalloonTipText = 'Skype для рабочего стола запущен, настройки восстановлены - проверяем работу.' | |
$balloon.BalloonTipTitle = 'Готово' | |
$balloon.Visible = $true | |
$balloon.ShowBalloonTip(10000) | |
} |
Архив с готовым файлом можно скачать по ссылке.
В итоге пользователи могут сами восстанавливать работу Skype, не дёргая системного администратора.
0 коммент. :
Отправить комментарий