none
Мониторинг большого количества пользователей АД RRS feed

  • Вопрос

  • Уважаемые коллеги, может быть кто-то сталкивался с такой тривиальной задачей:
    Скрипт должен читать текстовый файл со списком имен (или IP) машин и затем опрашивать эти машины кто из пользователей АД сидит на них (полное имя, дата регистрации) и как его можно удаленно разлогинить (у меня получается только ребутнуть машину коммандой shutdown)?
    Спасибо за помощь.
    23 июня 2007 г. 4:58

Ответы

  • Скрипт, который возвращает список пользователей, вошедших на компьютер:

    strComputer = "atl-ws-o1"
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colComputer = objWMIService.ExecQuery _
        ("Select * from Win32_ComputerSystem")

    For Each objComputer in colComputer
        Wscript.Echo "Logged-on user: " & objComputer.UserName
    Next

    Скрипт взят
    отсюда.

    Скрипт, закрывающий пользовательские сессии на компьютере:
    strComputer = "."
    Set objWMIService = GetObject_
        ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & _
            strComputer & "\root\cimv2")
    
    Set colOperatingSystems = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")
     
    For Each objOperatingSystem in colOperatingSystems
        objOperatingSystem.Win32Shutdown(0)
    Next
     

    Скрипт аналогичен взятому отсюда, только изменен аргумент в методе Win32Shutdows (0 - это Logoff).



     
    23 июня 2007 г. 19:07
    Модератор
  •  Eugene_Zhuganov написано:
    osr, очень полезный ответ, спасибо!
    на практике столкнулся с таким: нужно опросить более 200 компьютеров и записать результат в файл, если не трудно, можешь подсказать, как правильно модифицировать этот код, чтобы опрос шел по IP из файла списка (ну или в этом же скрипте прописан - не принципиально) и в случае, если машина недоступна (ping -n 1 = timeout) то не выдавать ошибку, как в текущем коде, а писать что-нибудь вида "%ComputerName%-Request timed out"?

     

    А вот специально для вас написали    http://myitforum.com/cs2/blogs/dhite/archive/2007/04/08/updated-vbs-script-ping-a-list-of-machines-and-write-results-to-excel.aspx

     

    26 июня 2007 г. 10:18
    Модератор

Все ответы

  • Скрипт, который возвращает список пользователей, вошедших на компьютер:

    strComputer = "atl-ws-o1"
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colComputer = objWMIService.ExecQuery _
        ("Select * from Win32_ComputerSystem")

    For Each objComputer in colComputer
        Wscript.Echo "Logged-on user: " & objComputer.UserName
    Next

    Скрипт взят
    отсюда.

    Скрипт, закрывающий пользовательские сессии на компьютере:
    strComputer = "."
    Set objWMIService = GetObject_
        ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & _
            strComputer & "\root\cimv2")
    
    Set colOperatingSystems = objWMIService.ExecQuery _
        ("Select * from Win32_OperatingSystem")
     
    For Each objOperatingSystem in colOperatingSystems
        objOperatingSystem.Win32Shutdown(0)
    Next
     

    Скрипт аналогичен взятому отсюда, только изменен аргумент в методе Win32Shutdows (0 - это Logoff).



     
    23 июня 2007 г. 19:07
    Модератор
  • Перепробовал кучу скриптов, которые определяют кто залогинен на компьютере, ни один не дал 100% работоспособности. Поэтому решил проблему таким образом, при логоне запускается скрипт, который пишет в SQL базу информацию о юзере, компьютере, времени события, терминально вошел или нет. Вторым скриптом смотрю инетересующую меня информацию.
    26 июня 2007 г. 5:43
  • osr, очень полезный ответ, спасибо!
    на практике столкнулся с таким: нужно опросить более 200 компьютеров и записать результат в файл, если не трудно, можешь подсказать, как правильно модифицировать этот код, чтобы опрос шел по IP из файла списка (ну или в этом же скрипте прописан - не принципиально) и в случае, если машина недоступна (ping -n 1 = timeout) то не выдавать ошибку, как в текущем коде, а писать что-нибудь вида "%ComputerName%-Request timed out"?
    26 июня 2007 г. 6:54
  •  Eugene_Zhuganov написано:
    osr, очень полезный ответ, спасибо!
    на практике столкнулся с таким: нужно опросить более 200 компьютеров и записать результат в файл, если не трудно, можешь подсказать, как правильно модифицировать этот код, чтобы опрос шел по IP из файла списка (ну или в этом же скрипте прописан - не принципиально) и в случае, если машина недоступна (ping -n 1 = timeout) то не выдавать ошибку, как в текущем коде, а писать что-нибудь вида "%ComputerName%-Request timed out"?

     

    А вот специально для вас написали    http://myitforum.com/cs2/blogs/dhite/archive/2007/04/08/updated-vbs-script-ping-a-list-of-machines-and-write-results-to-excel.aspx

     

    26 июня 2007 г. 10:18
    Модератор
  • Приведенные выше скрипты реально работают.
    26 июня 2007 г. 10:18
    Модератор