# Скрипт: example.ps1 # Версия: 3.0.0 # Дата: 2026-05-21 # Описание: Примеры использования gper-db.psm1 (Firebird backend) # # Предусловия: # — Firebird Server запущен на localhost:3050 # — SYSDBA / mid308 (или сменить в gper-db.psm1) # ================================================================ # ЗАГРУЗКА МОДУЛЯ # ================================================================ $MODULE_PATH = Join-Path $PSScriptRoot 'gper-db.psm1' if (-not (Test-Path $MODULE_PATH)) { Write-Host "Ошибка: '$MODULE_PATH' не найден" -ForegroundColor Red exit 1 } Import-Module $MODULE_PATH -Force # ================================================================ # ПРИМЕР 1: Запись клиента (из ТЗ) # ================================================================ Write-Host "`n=== Пример 1: Запись клиента ===" -ForegroundColor Cyan $P = @{ DbName = 'не используется' # имя таблицы берётся из ключа вложенной хэш-таблицы Client = @{ Name = 'Лох' IP = '87.117.25.171' DESCR = 'Лошара — плохой' } } Send-ToDb $P # или: $P | Send-ToDb # или: SendToDb $P # ================================================================ # ПРИМЕР 2: Быстрая заметка из любой точки # ================================================================ Write-Host "`n=== Пример 2: Отправка заметки ===" -ForegroundColor Cyan Send-NoteTo -Text 'Встреча с клиентом прошла успешно' -Tag 'meeting' -Source 'office-pc' # Source подставляется автоматически ($env:COMPUTERNAME) если не указан: Send-NoteTo 'Нужно проверить сервер 100.11' # ================================================================ # ПРИМЕР 3: Несколько таблиц за один вызов # ================================================================ Write-Host "`n=== Пример 3: Инфраструктура ===" -ForegroundColor Cyan Send-ToDb @{ DbName = 'ignored' Servers = @{ Hostname = 'pve-home' IP = '192.168.100.20' Role = 'Proxmox хост' } Network = @{ Subnet = '192.168.100.0/24' Gateway = '192.168.100.1' DESCR = 'Основная домашняя сеть' } } # ================================================================ # ПРИМЕР 4: Список таблиц в БД # ================================================================ Write-Host "`n=== Пример 4: Таблицы на сервере ===" -ForegroundColor Cyan Show-DbTables # ================================================================ # ПРИМЕР 5: Выборка данных # ================================================================ Write-Host "`n=== Пример 5: Все клиенты ===" -ForegroundColor Cyan Get-FromDb -TableName 'Client' | Format-Table -AutoSize Write-Host "`n=== Пример 5b: Фильтр по имени ===" -ForegroundColor Cyan Get-FromDb -TableName 'Client' -Filter "Name = 'Денис'" | Format-Table -AutoSize Write-Host "`n=== Пример 5c: Последние заметки ===" -ForegroundColor Cyan Get-FromDb -TableName 'Notes' -Limit 10 | Format-Table -AutoSize # ================================================================ # ПРИМЕР 6: Авто-миграция — новое поле # ================================================================ Write-Host "`n=== Пример 6: Новое поле Phone ===" -ForegroundColor Cyan Send-ToDb @{ DbName = 'ignored' Client = @{ Name = 'Сергей' IP = '80.254.98.215' DESCR = 'Главный офис' Phone = '+7-999-123-4567' # колонка добавится автоматически } } # ================================================================ # ПРИМЕР 7: Удаление (с защитой WhatIf) # ================================================================ Write-Host "`n=== Пример 7: Удаление ===" -ForegroundColor Cyan # Проверка без удаления: Remove-FromDb -TableName 'Client' -Filter "Name = 'Тест'" -WhatIf # Реальное удаление: # Remove-FromDb -TableName 'Client' -Filter 'Id = 5' -Confirm:$false # ================================================================ # ПРИМЕР 8: Отправка файла (содержимое как текст) # ================================================================ Write-Host "`n=== Пример 8: Отправка файла ===" -ForegroundColor Cyan $fileContent = Get-Content 'l:\Development\009-Self-host\VPS-сервера\ru-vps\0001-TZ.md' -Raw -ErrorAction SilentlyContinue if ($fileContent) { Send-ToDb @{ DbName = 'ignored' Files = @{ Filename = 'note.txt' Content = $fileContent Source = $env:COMPUTERNAME } } }