Мало кто не знает о существовании оснастки Remote Desktop Services Manager, которая позволяет эффективно управлять сессиями пользователей, получать информацию о них, отправлять сообщения и пр. Но большим недостатком этой оснастки являются периодические подвисания, а следовательно - нестабильная работа. В части оперативной техподдержки эта ситуация неприемлема. Поэтому иногда необходимо иметь дополнительные инструменты, "на всякий пожарный", как говорится.
Здесь на помощь к нам приходит Powershell и модуль для работы со службами удаленных рабочих столов PSTerminalServices, а именно процедура Get-TSSession. С помощью нехитрого скрипта мы получаем список пользователей на нашей терминальной ферме:
$users = "C:\Users\Public\ts-users.txt"
$marker = "C:\Users\Public\ts-users.mk"
Out-File $marker
If (Test-Path $users) {Clear-Content $users}
Import-Module PSTerminalServices
Import-Module ActiveDirectory
$servers = Get-ADGroupMember Terminal-Servers
$servers | Sort -Property Name | ForEach {
$ping = Test-Connection -ComputerName $_.Name -Count 1 -Quiet
If ($ping -eq $True) {
$ts = Get-TSSession -ComputerName $_.Name |
Where {($_.IPAddress -Match ".") -or ($_.State -eq "Disconnected")}
$ts | Out-File $users -Width 400 -Append -Force -Confirm:$False} }
If (Test-Path $marker) {Remove-Item $marker -Force -Confirm:$False}
Ставим скрипт в планировщик задач раз в минуту и всегда имеем в файле C:\Users\Public\ts-users.txt актуальную информацию о пользователях нашей терминальной фермы (серверы группы Terminal-Servers). Во время выполения скрипта создается файл-маркер C:\Users\Public\ts-users.mk, который удаляется по завершению.
Здесь на помощь к нам приходит Powershell и модуль для работы со службами удаленных рабочих столов PSTerminalServices, а именно процедура Get-TSSession. С помощью нехитрого скрипта мы получаем список пользователей на нашей терминальной ферме:
$users = "C:\Users\Public\ts-users.txt"
$marker = "C:\Users\Public\ts-users.mk"
Out-File $marker
If (Test-Path $users) {Clear-Content $users}
Import-Module PSTerminalServices
Import-Module ActiveDirectory
$servers = Get-ADGroupMember Terminal-Servers
$servers | Sort -Property Name | ForEach {
$ping = Test-Connection -ComputerName $_.Name -Count 1 -Quiet
If ($ping -eq $True) {
$ts = Get-TSSession -ComputerName $_.Name |
Where {($_.IPAddress -Match ".") -or ($_.State -eq "Disconnected")}
$ts | Out-File $users -Width 400 -Append -Force -Confirm:$False} }
If (Test-Path $marker) {Remove-Item $marker -Force -Confirm:$False}
Ставим скрипт в планировщик задач раз в минуту и всегда имеем в файле C:\Users\Public\ts-users.txt актуальную информацию о пользователях нашей терминальной фермы (серверы группы Terminal-Servers). Во время выполения скрипта создается файл-маркер C:\Users\Public\ts-users.mk, который удаляется по завершению.
Комментариев нет:
Отправить комментарий