60 lines
2.0 KiB
PowerShell
60 lines
2.0 KiB
PowerShell
# ==========================================
|
||
# 🛠️ COMMON UTILS
|
||
# ==========================================
|
||
|
||
# --- ЦВЕТА И ВЫВОД ---
|
||
|
||
function Write-Step { param($msg) Write-Host "`n📦 $msg" -ForegroundColor Cyan }
|
||
function Write-Success { param($msg) Write-Host " ✅ $msg" -ForegroundColor Green }
|
||
function Write-Warning { param($msg) Write-Host " ⚠️ $msg" -ForegroundColor Yellow }
|
||
function Write-Error { param($msg) Write-Host " ❌ $msg" -ForegroundColor Red }
|
||
function Write-Info { param($msg) Write-Host " ℹ️ $msg" -ForegroundColor Gray }
|
||
|
||
function Write-Header {
|
||
param($Title)
|
||
Write-Host ""
|
||
Write-Host "==========================================" -ForegroundColor Cyan
|
||
Write-Host " $Title" -ForegroundColor Cyan
|
||
Write-Host "==========================================" -ForegroundColor Cyan
|
||
Write-Host ""
|
||
}
|
||
|
||
# --- ПОЛЕЗНЫЕ ФУНКЦИИ ---
|
||
|
||
function Get-ScriptDirectory {
|
||
if ($PSScriptRoot) { return $PSScriptRoot }
|
||
return Split-Path -Parent $MyInvocation.MyCommand.Path
|
||
}
|
||
|
||
function Ensure-Admin {
|
||
$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
|
||
if (-not $isAdmin) {
|
||
Write-Host "⛔ Требуются права АДМИНИСТРАТОРА!" -ForegroundColor Red
|
||
Write-Host " Пожалуйста, запустите скрипт от имени администратора." -ForegroundColor Gray
|
||
Start-Sleep -Seconds 3
|
||
exit 1
|
||
}
|
||
}
|
||
|
||
function Show-Menu {
|
||
param(
|
||
[string]$Title,
|
||
[System.Collections.Specialized.OrderedDictionary]$Options,
|
||
[string]$Prompt = "👉 Ваш выбор"
|
||
)
|
||
|
||
if ($Title) {
|
||
Write-Host "`n$Title" -ForegroundColor Yellow
|
||
}
|
||
|
||
$keys = $Options.Keys
|
||
foreach ($key in $keys) {
|
||
Write-Host " [$key] $($Options[$key])" -ForegroundColor White
|
||
}
|
||
Write-Host ""
|
||
|
||
return Read-Host "$Prompt"
|
||
}
|
||
|
||
|