Перейти к содержимому

Как вывести список пользователей 1с какую лицензию hasp использует пользователь.

Задача вывести список пользователей что бы узнать какой ключ hasp используется.

$RPHostPath = Get-Process -Name rphost | Select-Object -ExpandProperty Path -First 1
$Actual1CFolder = Split-Path $RPHostPath
Set-Location $Actual1CFolder

$cluster = .\rac.exe cluster list | Where-Object { $_ -match 'cluster' } | ForEach-Object { $_ -replace "^.*?: " }

$sessions = .\rac.exe session --cluster=$cluster list --licenses

# Парсим вывод rac.exe и преобразуем в объекты PowerShell
$sessionObjects = @()
$currentSession = @{}

foreach ($line in $sessions) {
    if ($line -match '^session\s*:\s*(.+)') {
        if ($currentSession.Count -gt 0) {
            $sessionObjects += [PSCustomObject]$currentSession
            $currentSession = @{}
        }
        $currentSession['Session'] = $matches[1].Trim()
    }
    elseif ($line -match '^(.+?)\s*:\s*(.+)') {
        $property = $matches[1].Trim() -replace '-', '_'
        $value = $matches[2].Trim()
        $currentSession[$property] = $value
    }
}

# Добавляем последнюю сессию
if ($currentSession.Count -gt 0) {
    $sessionObjects += [PSCustomObject]$currentSession
}

# Первый вывод: таблица сессий
Write-Host "Список активных сессий 1С:`n" -ForegroundColor Green
$sessionObjects | Format-Table -AutoSize -Property @(
    'session',
    'user_name',
    'host',
    'app_id',
    'series',
    'license_type',
    'max_users_all',
    'max_users_cur',
    'short_presentation'
)

# Второй вывод: группировка лицензий
Write-Host "`nИспользование лицензий:`n" -ForegroundColor Green

# Группируем по app_id и series
$licenseUsage = $sessionObjects | Group-Object -Property app_id, series | ForEach-Object {
    [PSCustomObject]@{
        "Тип клиента" = $_.Values[0]
        "Лицензия" = $_.Values[1]
        "Количество" = $_.Count
    }
}

# Выводим результат
$licenseUsage | Format-Table -AutoSize

# Дополнительная информация о веб-клиентах и толстых клиентах
$webClients = $sessionObjects | Where-Object { $_.app_id -eq 'WebClient' } | Group-Object -Property series
$thickClients = $sessionObjects | Where-Object { $_.app_id -eq '1CV8C' } | Group-Object -Property series

Write-Host "`nДетализация по клиентам:`n" -ForegroundColor Green

foreach ($group in $webClients) {
    Write-Host "WebClient использует $($group.Name) количество $($group.Count)"
}

foreach ($group in $thickClients) {
    Write-Host "1CV8C использует $($group.Name) количество $($group.Count)"
}

Similar Posts:

Метки:

Добавить комментарий

Яндекс.Метрика