PowerShell : searching rdp session users on servers

Ответить
M.K
Новичок
Сообщения: 9
Зарегистрирован: 04 дек 2014 16:52

PowerShell : searching rdp session users on servers

Сообщение M.K »

Код: Выделить всё

# скрипт составляет список терминальных сессиий на серверах из списка-файла 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
Последний раз редактировалось M.K 27 окт 2015 13:37, всего редактировалось 1 раз.
Аватара пользователя
Алексей Максимов
Администратор сайта
Сообщения: 572
Зарегистрирован: 14 сен 2012 06:50
Откуда: г.Сыктывкар
Контактная информация:

Re: PowerShell : searching rdp session users on servers

Сообщение Алексей Максимов »

Содержимое скриптов лучше заворачивать в тэг Code, чтобы ничего не побилось.
M.K
Новичок
Сообщения: 9
Зарегистрирован: 04 дек 2014 16:52

Re: PowerShell : searching rdp session users on servers

Сообщение M.K »

ок. поправил.
Ответить

Вернуться в «Powershell»