Aug 3, 2010

Получение залогиненных пользователей на ПК

Была когда-то давно задача вытащить всех пользователей с привязкой по ПК. Решено было с помощью любимого PoSh. Выложить данный скрипт натолкнул недавний вопрос на форуме TechNet.
 
cls
 
#Создаем фильтр проверки наличия компа в сети
Filter Where-Online
{
$ping = new-object System.Net.NetworkInformation.Ping
trap {Write-Verbose "ping error"; Continue}
if ($ping.send($_).Status -eq "Success" ) { $_ }
}
 
$Comp_list=@{}
 
#Получаем компы из нужной OU в AD
$comp_arr= Get-QADComputer -SearchRoot "ou=test, ou=workstations,dc=moscow,dc=domain,dc=ru" | foreach {$_.dnsname} | where-online
 
#загоняем в цикл
foreach ($pc in $comp_arr)
{
#Запрос к WMI даленного компа
$CS = Gwmi Win32_ComputerSystem -Comp $pc
"Machine Name: " + $CS.Name
"Logged On User: " + $CS.UserName
 
#add new object
$Comp_list[$CS.Name] = new-object System.Management.Automation.PSObject
 
$Comp_list[$CS.Name] | add-member noteproperty CompName $CS.Name
$Comp_list[$CS.Name] | add-member noteproperty User $CS.UserName

После выгрузки мы имеем CSV файл, что с ним делать? Я лично импортирую его в Excel, c разделителем по запятой. Делается это примерно так:

CSV