Public/Test-1CModuleDependency.ps1
|
<#
.SYNOPSIS Проверка зависимостей для корректной работы модуля .DESCRIPTION Подробное описание .PARAMETER Name Описание параметра .EXAMPLE Пример использования #> function Test-1CModuleDependency{ [CmdletBinding()] param( [switch]$RequireAdmin ) Write-Host "Проверка версии Powershell" # Проверка версии PowerShell if ($PSVersionTable.PSVersion.Major -lt 5) { throw "Требуется PowerShell 5.1 или выше" } else { Write-Host "Версия Powershell соответствует требованиям" -ForegroundColor Green } # Проверка прав администратора Write-Host "Проверка прав пользователя" if ($RequireAdmin -and (-not ([Security.Principal.WindowsPrincipal]::new( [Security.Principal.WindowsIdentity]::GetCurrent() )).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator))) { throw "Требуются права администратора" } else { Write-Host "Запущено с правами администратора" -ForegroundColor Green } # Проверка наличия .NET Framework Write-Host "Проверка версии Net.Framework" if (-not (Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -Recurse | Get-ItemProperty -Name Version -EA SilentlyContinue | Where-Object { $_.Version -match '^4\.' })) { throw "Требуется .NET Framework 4.x" } else { Write-Host "Версия Net.Framework соответствует требованиям" -ForegroundColor Green } # Проверка линка и дистибутивов Write-Host "Проверка наличия директории с дистрибутивами" $searchDistrFolder = Find-1CDistroFolder if ($searchDistrFolder) { Write-Host "Директория с дистрибутивами: $searchDistrFolder" -ForegroundColor Green } else { Write-Host "Директория 1cv8.adm с дистрибутивами не найдена!" -ForegroundColor Red # Если критично, можно вызвать throw или выполнить альтернативные действия } # Проверка наличия 7-zip Write-Host "Проверка установки 7-Zip" $SevenZip = 'C:\Program Files\7-Zip\7z.exe' if (-not (Test-Path $SevenZip)) { throw "7-Zip не найден по пути: $SevenZip" }else { Write-Host "7-Zip установлен" -ForegroundColor Green } # Проверка задачи обновления модуля 1CMgmt if ( -not(Get-ScheduledTask -TaskName "Update Module 1CMgmt" -ErrorAction SilentlyContinue)) { Write-Host "Не найдена задача обновления модуля! `nСоздаю задачу обновления модуля в планировщике Windows" -ForegroundColor Red New-ModuleUpdateTask } else {Write-Host "Задача обновления модуля найдена в плнировщике Windows" -ForegroundColor Green} } |