none
Два вопроса RRS feed

  • Вопрос

  •  

    1. Был написан скрипт на Powershell для обнаружения компов в Event Log файла "System", которых есть ошибки связанные с жесткими дисками. Для ОС WinXP скрипт работает нормально и достаточно быстро. А вот для Windows 2000 все наоборот, одна машина в домене может проверяться очень и очень продолжительное время - пока прошерстит весь список. Главная строка приведена ниже, стер в ней всякие другие процедуры, которые стоят в скобках где стоит break: 

    get-wmiobject -class win32_ntlogevent -computerName $NameComputer -Filter "logfile = 'system'" -Property SourceName,Message,EventCode,TimeGenerated | Where-Object { if (($_.SourceName -eq "disk")-and ($_.Message -like '*Harddisk0*') ) { break }}

     

    Может кто-то что-то посоветовать на увелечение скорости работы скрипта с Win2000, или может у кого есть скрипт подобного характера и не только на powershell написанный.

     

     

    2. Второй вопрос: как узнать кто работает за данным ПК в домене в данный момент времени (сессия), какой wmi использовать??? Желательно для  WinXp&2000

     

    Спасибо 

     

     

    12 августа 2008 г. 7:45

Ответы

Все ответы

    1. В XP по сравнению с 2000-м EventLog сделан по другой технологии (отображение файла в виртуальную память), поэтому не удивительно, что у вас проблемы с производительностью EventLog в 2000-м - попробуйте уменьшить размер логов.
    2. Win32_ComputerSystem
    12 августа 2008 г. 12:48
    Модератор
  •  sie написано:
    1. В XP по сравнению с 2000-м EventLog сделан по другой технологии (отображение файла в виртуальную память), поэтому не удивительно, что у вас проблемы с производительностью EventLog в 2000-м - попробуйте уменьшить размер логов.

     

    Нда согласен что записей может быть много и их действительно много, но уменьшать их при первом запуске скрипта нет смысла. Ну да ладно с первым пунктом, будем считать разобрались.

     

     

     sie написано:

    2. Win32_ComputerSystem

    Про этот объект я знал и пробовал его.

     

     Get-WmiObject Win32_ComputerSystem -ComputerName bg-it03


    Domain              :
    Manufacturer        : System manufacturer
    Model               : System Product Name
    Name                : BG-IT03
    PrimaryOwnerName    : Sys Admin
    TotalPhysicalMemory : 2146611200

     

    И где логин пользователя ? Может нужны какие-то свойства еще???

    12 августа 2008 г. 13:10
  • Полный список свойств Get-WmiObject Win32_ComputerSystem  | Get-Member

     

    Пользователь (Get-WmiObject Win32_ComputerSystem).UserName

    13 августа 2008 г. 5:44
    Модератор
  • Code Snippet

     

    rem скрипт определяет залогинившегося на удаленном компьютере юзера
    rem
    strComputer = "имя компьютера"
    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

     

     

     

    честно позаимствованный откуда-то из интернета
    13 августа 2008 г. 6:12
  •  sie написано:

    Полный список свойств Get-WmiObject Win32_ComputerSystem  | Get-Member

     

    Пользователь (Get-WmiObject Win32_ComputerSystem).UserName

    Спасибо

     

    И сразу следующий вопрос, а может есть ещё вариант, как узнать кто последний авторизовался на удаленном компе???

    13 августа 2008 г. 7:05
  • Полагаю, что единственный путь - найти соответствующую запись в Security EventLog

     

    13 августа 2008 г. 12:49
    Модератор