gifts2017

Автоматизация администрирования и разработки 1С с помощью PowerShell

Опубликовал Yauhen Makei (mrDSide) в раздел Администрирование - Системное

Модуль автоматизации обслуживания 1С

В модуле собраны функции для работы с кластером серверов 1С, обработки выгруженной в файлы конфигурации, работы с HaspMonitor. Перечень рабочих экспортируемых функций на момент публикации:

Remove-NotUsedObjects - производит удаление неиспользуемых объектов конфигурации и выводит информацию о найденных упонинаниях объектов в модулях, используя выгруженные файлы конфигурации. Далее конфигурацию можно загрузить из файлов
Find-1CEstart - поиск стартера 1С по данным реестра
Get-ClusterData  - собирает информацию с кластеров 1С, используя COMConnector (информация соответствует данным консоли кластера)
Remove-Session - удаляет сессию с кластера серверов и сеанс ИБ (если указан параметр CloseIbConnection)
Get-NetHaspIniStrings - находит значения параметров в файле nethasp.ini
Invoke-NetHasp - возвращает метрику Sentinel/Aladdin HASP Network Monitor с возможностью преобразования к LLD-JSON для Zabbix
Invoke-UsbHasp - возвращает данные устройств USB (HASP), количество объектов, создаёт LLD-JSON для Zabbix
Invoke-SqlQuery - выполняет произвольный запрос к серверу SQL без использования sqlcmd, так же включены два часто используемых запроса для анализа блокировок сервера

Пример 1:

   PS C:\> $modules = Remove-NotUsedObjects E:\TEMP\ExportingConfiguration
   PS C:\> $gr = $modules | group File, Object | select -First 1
   PS C:\> ise ($gr.Group.File | select -First 1) # открываем модуль в новой вкладке ISE
   # альтернатива 'start notepad $gr.Group.File[0]'
   PS C:\> $gr.Group | select Object, Type, Line, Position -Unique | sort Line, Position | fl # Смотрим что корректировать
   PS C:\>  $modules = $modules | ? File -NE ($gr.Group.File | select -First 1) # удаление обработанного файла из списка объектов
   # альтернатива '$modules = $modules | ? File -NE $psise.CurrentFile.FullPath'
   # и все сначала с команды '$gr = $modules | group File, Object | select -First 1'

Пример 2 (найти установленный стартер):

   PS C:\> Find-1CEstart
   C:\Program Files (x86)\1cv8\common\1cestart.exe

   PS C:\>

Пример 3 (собрать данные кластеров 1С с использованием указанных в nethasp.ini файле данных):

    $netHaspParams = Get-NetHaspIniStrings
    $hostsToQuery += $netHaspParams.NH_SERVER_ADDR
    $hostsToQuery += $netHaspParams.NH_SERVER_NAME
    $stat = $hostsToQuery | % { Get-1CclusterData $_ -Verbose }

Пример 4 (удалить сессию пользователя):

    $password = Read-Host -AsSecureString

   $data = Get-1CclusterData 1c-cluster.contoso.com -NoClusterAdmins -NoClusterManagers -NoWorkingServers -NoWorkingProcesses -NoClusterServices -ShowConnections None -ShowSessions Cluster -ShowLocks None -NoInfobases -NoAssignmentRules -User Example -Password $password
    Remove-1Csession -HostName $data.Clusters.HostName -MainPort $data.Clusters.MainPort -User Admin -Password $password -SessionID 3076 -InfoBaseName TestDB -Verbose -NotCloseConnection

Пример 5 (получение структуры значений параметров nethasp.ini):

   PS C:\> Get-NetHaspIniStrings

   Name                           Value                                                                                                                                                          
   ----                           -----                                                                                                                                                          
   NH_SERVER_ADDR                 {192.168.0.103, 192.168.0.105, 192.168.0.104, 10.10.254.232...}

Пример 6 (работа с SQL):

   $password = Read-Host -AsSecureString

   Invoke-SqlQuery -Server test.contoso.com -Database test -user admin -password $password -Data Custom -Text 'select @@version' # проверка версии сервера

   Invoke-SqlQuery -Server test.contoso.com -Database test -user admin -password $password -Data DatabaseLocks -Verbose # получить данные блокировок базы

   Invoke-SqlQuery -Server test.contoso.com -user admin -password $password -Data CurrentExequtingQueries-Verbose # получить текущие исполняющиеся запросы

Пример 7 (получения данных NetHASP):

   Invoke-NetHasp -Action "Discovery" -ObjectType "Server" # получить данные использования лицензий NetHASP

   Invoke-NetHasp -Action "Get" -ObjectType "Slot" -Key "CURR" -ServerId "stuffserver.contoso.com" -SlotId "16" -ErrorCode "-127" # получить количество используемых лицензий на слоте 16 сервера. В случае ошибки вернуть код ошибки 127

Пример 8 (получения данные физических устройств):

    Invoke-UsbHasp -Action "Discovery" -ObjectType "USBController" # получить данные логических устройств HASP

    Invoke-UsbHasp -Action "Count" -ObjectType "LogicalDevice" # получить количество HASP-ключей

Обновлено (30.11.2016):

Во всех командлетах тип параметра $password изменён на [Security.SecureString] и теперь в параметр следует передавать значение, полученное т.о., например

   $password = Read-Host -AsSecureString

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Архив с файлами модуля
.zip 66,95Kb
29.11.16
5
.zip 66,95Kb 5 Скачать

См. также

Вознаграждение за ответ
Сумма: 2 $m
Добавили:
Айрат Саттаров (kwazi) (2.00 $m)
Подписаться Добавить вознаграждение

Комментарии

1. Kani Mago (Kaniman) 29.11.16 22:25
Спасибо! добавлю в подписку.
2. Yauhen Makei (mrDSide) 30.11.16 09:20
(1) Буду развивать по мере собственной необходимости, но если есть пожелания, предложения, возможность подключиться к работе, буду рад - https://github.com/mrDSide/1CHelper.psm1
3. Юрий Пермитин (YPermitin) 01.12.16 11:59
(2) у самого есть скрипты для разных задач на PS.
Если будет время, то кину pull-request'ы.
4. Yauhen Makei (mrDSide) 01.12.16 13:26
(3) не обязательно PowerShell, сам я администрирую не много, больше пишу код. Можно сценарии работы, которые приходится часто выполнять.
5. Евгений Мартыненков (JohnyDeath) 03.12.16 15:59
(4) Если PS не обязателен, то вот держите:
https://github.com/EvilBeaver/oscript-library
https://github.com/oscript-library
И сам движок: http://oscript.io/
Evil Beaver; +1 Ответить
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа