Обнаружили интересный и не очень приятный сюрприз от разработчиков Veritas Backup Exec. Вместе с Backup Exec устанавливается PowerShell управляющий модуль BEMCLI. Так вот, в новых версиях разработчики перестали подписывать своим сертификатом скрипты PowerShell.
Чего это они?..
Если на сервере отключена возможность запуска неподписанных скриптов, то при попытке запустить Backup Exec Management Command Line Interface получим ошибку:
import-module : File C:\Program Files\Veritas\Backup Exec\Modules\PowerShell3\BEMCLI\BEMCLI.Scripts.psm1 cannot be loaded. The file C:\Program Files\Veritas\Backup Exec\Modules\PowerShell3\BEMCLI\BEMCLI.Scripts.psm1 is not digitally signed. You cannot run this script on the current system. For more information about running scripts and setting execution policy, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170.
При попытке использовать модуль BEMCLI в своём скрипте, подписанном цифровой подписью, получаем то же самое:
Я проверил, действительно, файл C:\Program Files\Veritas\Backup Exec\Modules\PowerShell3\BEMCLI\BEMCLI.Scripts.psm1 не имеет цифровой подписи, да и остальные скрипты тоже не подписаны. А в старых версиях Backup Exec все цифровые подписи на месте.
Забыли? Забили?
Что делать?
Сначала мы обновили Backup Exec до последней версии — не помогло. Потом пошли спать. Проснулись и подумали: а кто нам мешает самим подписать скрипты? Иду в папку C:\Program Files\Veritas\Backup Exec\Modules\BEMCLI. Копирую себе файлы:
- BEMCLI.format.ps1xml
- BEMCLI.psd1
- BEMCLI.Scripts.psm1
- BEMCLI.Types.ps1xml
Сохраняю на своём компьютере в C:\PS.
Подписываю скрипты своим сертификатом:
Подписать PowerShell скрипт с помощью сертификата
$cert = (Get-ChildItem cert:\CurrentUser\my -CodeSigningCert)[0]
Get-ChildItem C:\PS\*.* | Set-AuthenticodeSignature -Certificate $cert
Копирую с заменой подписанные скрипты обратно на сервер.
То же самое делаю для папки C:\Program Files\Veritas\Backup Exec\Modules\PowerShell3\BEMCLI. Копирую себе файлы:
- BEMCLI.format.ps1xml
- BEMCLI.psd1
- BEMCLI.Scripts.psm1
- BEMCLI.Types.ps1xml
Подписываю их своим сертификатом и возвращаю с заменой обратно.
В свойствах скриптов появляется моя цифровая подпись.
Проверяем.
Всё прекрасно заработало.