Код: Выделить всё
# скрипт составляет список терминальных сессиий на серверах из списка-файла servers_rdp.txt.
# имена серверов - в столбик.
# так же позволяет найти - где залогинился пользователь.
########################
## find user
$FindUserName = 'USER_LOGIN'
###################
############################
# files with list of rdp servers
$Sec_Servers_List = "servers_rdp.txt"
# config path
$path="C:\temp\terminals_users"
###############
###############
###################################
$timestamp = Get-Date -UFormat %d%m%y
$hostnames = Get-Content $path\$Sec_Servers_List |? {Test-Connection $_ -Quiet -Count 1}
$sessionTable = @()
$sessionTable = New-Object system.Data.DataTable "Curently terminal users"
$server = New-Object system.Data.DataColumn "ServerName",([string])
$sessionType = New-Object system.Data.DataColumn "Type",([string])
$status = New-Object system.Data.DataColumn "Status",([string])
$RDPUser = New-Object system.Data.DataColumn "User",([string])
$sessionTable.columns.add($server)
$sessionTable.columns.add($sessionType)
$sessionTable.columns.add($status)
$sessionTable.columns.add($RDPUser)
$tp2 = Test-Path $path\report
if ($tp2 -ne "True") { New-Item $path\report -type directory }
$tp2 = Test-Path $path\report\$timestamp
if ($tp2 -ne "True") { New-Item $path\report\$timestamp -type directory }
foreach ($hostname in $hostnames) {
$serverName = $hostname
$queryResults = (qwinsta /server:$ServerName | foreach { (($_.trim() -replace "\s+",","))} | ConvertFrom-Csv)
ForEach ( $queryResult in $queryResults )
{
If ( ( $queryResult.USERNAME -ne $NULL ))
{
IF ( $queryResult.Id -eq "Disc" )
{
$row = $sessionTable.NewRow()
$row.ServerName = $serverName
$row.Type = $queryResult.USERNAME
$row.Status = $queryResult.Id
$row.User = $queryResult.SESSIONNAME
$sessionTable.Rows.Add($row)
}
else
{
$row = $sessionTable.NewRow()
$row.ServerName = $serverName
$row.Type = $queryResult.SESSIONNAME
$row.Status = $queryResult.Id
$row.User = $queryResult.USERNAME
$sessionTable.Rows.Add($row)
}
}
}
}
$sessionTable | ft | Out-File $path\report\$timestamp\rdp_session.txt
$sessionTable | where { $_.User -eq $FindUserName } | ft | Out-File $path\report\$timestamp\rdp_session_FindUser.txt