Задача вывести список пользователей что бы узнать какой ключ 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:
- Как вывести список пользователей у которых не при монтировался диск fslogix и переименовать FriendlyName
- Как посмотреть кто залогинен на серверах в сети powershell
- Как удалить сохранённые пароли из windows.
- Как с помощью PowerShell посчитать сколько пользователей входит в группу где много вложенных групп
- Как искать внутри GPO групповых политик.
