none
Получить текущего пользователя RRS feed

  • Вопрос

  • День добрый. )

    (я наверное за последнее время всем тут надоел со своими глупыми вопросами)

    Вот еще вопросы:

    1. как в PowerShell получить имя пользователя системы, который сейчас активен (под которым залогинен пользователь)?
    2. как в PowerShell в цикле передрать всех пользователей, под которыми были входы (работоспособные учетки)?

    заранее благодарен...
    3 июня 2009 г. 19:17

Ответы

  • Если профили никто не премещал, то можно проще:

     dir "c:\documents and settings\" | % {rm ($_.Name + "\Local Settings\Temp\*") -Recurse -Force -WhatIf
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    • Помечено в качестве ответа Mirac 4 июня 2009 г. 17:28
    Модератор
  • Vasily Gusev
    спасибо за ответ на первый вопрос.

    по поводу второго вопроса:
    Мне нужно знать имена всех локальных учетных записей пользователей, а не системных (не нужны записи типа HelpAsistant...).
    Т.е., если на компьютере радотает 2 учетки (User и User1), а залогинено в данны моммент под User, то имя второй РАБОТАЮЩЕЙ учетки надо получить.

    на вопрос зачем же все это надо - отвечу так: для того, что б знать в какой ветке c:\documents and settings\ ** \Local Settings\Temp прибивать временные файлы.

    заранее благодарен

Все ответы

  • 1.
    gwmi -query "Select logonid from Win32_LogonSession where logontype = 2 or logontype = 10" -computername hyper | 
    foreach {gwmi -query "Associators of {Win32_LogonSession.LogonId=$($_.logonid)} Where AssocClass=Win32_LoggedOnUser Role=Dependent" -computername hyper}
    2. Сформулируйте получше вопрос. Непонятно какие пользователи вам нужны - локальные или доменные. Тем более непонятно что же такое ужасное вы с ними хотите сделать.


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    • Предложено в качестве ответа Vasily GusevModerator 4 июня 2009 г. 5:42
    • Отменено предложение в качестве ответа Mirac 4 июня 2009 г. 7:54
    Модератор
  • Vasily Gusev
    спасибо за ответ на первый вопрос.

    по поводу второго вопроса:
    Мне нужно знать имена всех локальных учетных записей пользователей, а не системных (не нужны записи типа HelpAsistant...).
    Т.е., если на компьютере радотает 2 учетки (User и User1), а залогинено в данны моммент под User, то имя второй РАБОТАЮЩЕЙ учетки надо получить.

    на вопрос зачем же все это надо - отвечу так: для того, что б знать в какой ветке c:\documents and settings\ ** \Local Settings\Temp прибивать временные файлы.

    заранее благодарен
  • Как то так:
    $LoggedOn = Get-LoggedOn | %{$_.SID}
    Dir 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21*'| 
    foreach {Get-ItemProperty $_.pspath} | where {$LoggedOn -notcontains $_.PSChildName}|
    foreach {rm ($_.ProfileImagePath + "\AppData\Local\Temp\*") -Recurse -Force -WhatIf}

    Чтобы файлы действительно удалялись - убрать ключ -WhatIf. Get-LoggedOn - обёртка для вышеприведенных команд, брать тут
    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    • Изменено Vasily GusevModerator 4 июня 2009 г. 7:38
    • Предложено в качестве ответа Vasily GusevModerator 4 июня 2009 г. 7:39
    • Отменено предложение в качестве ответа Mirac 4 июня 2009 г. 17:28
    Модератор
  • Если профили никто не премещал, то можно проще:

     dir "c:\documents and settings\" | % {rm ($_.Name + "\Local Settings\Temp\*") -Recurse -Force -WhatIf
    Сазонов Илья http://www.itcommunity.ru/blogs/sie/
    • Помечено в качестве ответа Mirac 4 июня 2009 г. 17:28
    Модератор
  • Спасибо
    Все получилось)!
    4 июня 2009 г. 17:29