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 "Версия Powershell соответствует требованиям" -ForegroundColor Green
    }

    # Проверка линка и дистибутивов
    Write-Host "Проверка наличия директории с дистрибутивами"
    $searchDistrFolder = Find-1CDistroFolder

    if ($searchDistrFolder) {
        Write-Host "✓ директория с дистрибутивами: $searchDistrFolder" -ForegroundColor Green
    } else {
        Write-Host "✗ директория с дистрибутивами не найдена!" -ForegroundColor Red
        # Если критично, можно вызвать throw или выполнить альтернативные действия
    }

    
}