Есть скрипт, который завершает сеансы всех пользователей по прошествию пяти часов.
Подскажите, как его модифицировать, чтобы перед завершением сеансов, он устанавливал блокировку регламентных заданий.
$servers1C =("localhost:1540")
$bases = ("db_1","db_2")
$timeDelay = -5
$logFile = "E:\tmp\log.txt"
#общее число пользователей
$intUsersCount=0
echo (Get-Date).ToString() > $logFile
# Создается COM-объект подключения к 1С.
$connector = New-Object -Comobject "V83.COMConnector"
# Подключение к агенту на сервере.
foreach ($server1C in $servers1C)
{
$AgentConnection = $connector.ConnectAgent($server1C)
$Cluster = $AgentConnection.GetClusters()[0]
$AgentConnection.Authenticate($Cluster,"","")
$bases=$AgentConnection.GetInfoBases($Cluster)
foreach ($baseALL in $bases)
{
$base = $baseALL.Name
$sessions1CtoTerminate = ($AgentConnection.GetSessions($Cluster) | Where-Object {$_.Infobase.Name -eq $base -and $_.AppId -ne "SrvrConsole" -and $_.AppId -ne "BackgroundJob" -and $_.StartedAt -lt ((Get-Date).AddHours($timeDelay))})
foreach ($session in $sessions1CtoTerminate)
{
$sessionToKillMsg = "Session ‘" + $session.infoBase.Name.ToString() + " — " + $session.userName.ToString() + " — " + $session.Host.ToString() + " — " + $session.AppID.ToString() + " — " + $session.StartedAt.ToString() + " — " + $session.LastActiveAt.ToString() + "‘ has been terminated at " + (Get-Date).ToString()
echo $sessionToKillMsg >> $logFile
## Отключаем сеансы которые "время начала" больше $timeDelay часов (5 часов)
$AgentConnection.TerminateSession($Cluster,$session)
}
}
#Всего активных сеансов пользователй пользователей
echo $intUsersCount