Tuesday, August 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