none
Удаление профиля Powershell RRS feed

  • Вопрос

  • Добрый день

    Требуется скрипт для през. компа, который будет очищать учетные записи кроме дефолтных.

    cls
    $files = Get-ChildItem ($env:SystemDrive + '\users')
    for ($i=0;$i -lt ($files.Count);$i++)
    {
    $files[$i].name
    }

    Таким образом получаю список всех папок в Users. Далее мне нужно сравнить чтобы они небыли равны $a = "Default", "Общие". 

    Ну и далее еще нужно почистить папки с настройками профиля, чтобы убрать вход под временным профилем. Для этого надо проверять каждый объект этого пути

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

    на содержание в нем $files[$i].name. Если он имеется, этот пункт удаляется.

    Спасибо 

    19 октября 2012 г. 6:49

Ответы

  • А в чем может быть тогда беда? Kazun, папка пользователя и в реестре раздел должны удалиться после выполнения данной команды?

    Если у меня есть пользователь maxim, я ввожу Get-WmiObject win32_userprofile -filter "localpath like 'maxim'" | Foreach {$_.Delete()}

    Все верно?

    1) Должно быть %maxim%. (А лучше убедиться посмотрев вывод Get-WmiObject win32_userprofile | FT localpath,но %% обязательны).

    2) Консоль должна быть запущена с повышенными привилегиями("Run As Administrator")

    3) Профиль пользователя не должен быть загружен

    PS. На будущее,приводите результат вывода команд, с экономите время.


    • Изменено KazunEditor 19 октября 2012 г. 10:52
    • Помечено в качестве ответа JabBaton 19 октября 2012 г. 11:07
    19 октября 2012 г. 10:51
    Отвечающий

Все ответы

  • Get-WmiObject win32_userprofile -filter "Special='False'" | Foreach {$_.Delete()} 

    19 октября 2012 г. 7:09
    Отвечающий
  • Исключение при вызове "Delete" с "0" аргументами: ""
    C:\Test\DeleteProfile.ps1:1 знак:79
    + Get-WmiObject win32_userprofile -filter "Special='False'" | Foreach {$_.Delete <<<< ()} 
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : DotNetMethodException
    19 октября 2012 г. 7:31
  • Исключение при вызове "Delete" с "0" аргументами: ""
    C:\Test\DeleteProfile.ps1:1 знак:79
    + Get-WmiObject win32_userprofile -filter "Special='False'" | Foreach {$_.Delete <<<< ()} 
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : DotNetMethodException

    Get-WmiObject win32_userprofile -filter "Special='False'" для примера выбрать для теста не загруженную учетную запись и выполнить Delete.
    19 октября 2012 г. 7:38
    Отвечающий
  • Как правильно выставлять аргументы? =( Если пользователь user например
    19 октября 2012 г. 7:49
  • Как правильно выставлять аргументы? =( Если пользователь user например

    Get-WmiObject win32_userprofile -filter "localpath like '%username%'"
    19 октября 2012 г. 8:01
    Отвечающий
  • Ничего не изменилось, хотя скрипт выполнился без ошибок
    19 октября 2012 г. 8:15
  • Ничего не изменилось, хотя скрипт выполнился без ошибок

    А метод Delete присутствовал в скрипте?
    19 октября 2012 г. 8:20
    Отвечающий
  • Если я правильно понял Get-WmiObject win32_userprofile -filter "localpath like '%username%'" | Foreach {$_.Delete()} 
    19 октября 2012 г. 8:30
  • Если я правильно понял Get-WmiObject win32_userprofile -filter "localpath like '%username%'" | Foreach {$_.Delete()} 

    Вывод из консоли:

    Get-WmiObject win32_userprofile -filter "localpath like '%username%'" | Foreach {$_.Delete()}

    и потом

    Get-WmiObject win32_userprofile -filter "localpath like '%username%'"

    19 октября 2012 г. 8:39
    Отвечающий
  • ничего не изменилось
    19 октября 2012 г. 8:49
  • А что должно произойти? Я правильно понимаю, что должны удалиться раздел %user%, и папка в C:\Users?
    19 октября 2012 г. 8:59
  • Кое что нашел: 

    Как Томас говорил, Win32_Profile класс не имеет Delete метод.

    19 октября 2012 г. 10:09
  • Кое что нашел: 

    Как Томас говорил, Win32_Profile класс не имеет Delete метод.


    ОС?
    19 октября 2012 г. 10:30
    Отвечающий
  • Тестирую на Win8Ent, клиенты Win7Ent
    19 октября 2012 г. 10:32
  • Тестирую на Win8Ent, клиенты Win7Ent

    Этот метод доступен начиная с Vista,поэтому Томас прав наполовину.
    19 октября 2012 г. 10:36
    Отвечающий
  • А в чем может быть тогда беда? Kazun, папка пользователя и в реестре раздел должны удалиться после выполнения данной команды?

    Если у меня есть пользователь maxim, я ввожу Get-WmiObject win32_userprofile -filter "localpath like 'maxim'" | Foreach {$_.Delete()}

    Все верно?

    19 октября 2012 г. 10:45
  • А в чем может быть тогда беда? Kazun, папка пользователя и в реестре раздел должны удалиться после выполнения данной команды?

    Если у меня есть пользователь maxim, я ввожу Get-WmiObject win32_userprofile -filter "localpath like 'maxim'" | Foreach {$_.Delete()}

    Все верно?

    1) Должно быть %maxim%. (А лучше убедиться посмотрев вывод Get-WmiObject win32_userprofile | FT localpath,но %% обязательны).

    2) Консоль должна быть запущена с повышенными привилегиями("Run As Administrator")

    3) Профиль пользователя не должен быть загружен

    PS. На будущее,приводите результат вывода команд, с экономите время.


    • Изменено KazunEditor 19 октября 2012 г. 10:52
    • Помечено в качестве ответа JabBaton 19 октября 2012 г. 11:07
    19 октября 2012 г. 10:51
    Отвечающий
  • Я бы с радостью, никаких ошибок не выводит
    19 октября 2012 г. 11:02
  • Я бы с радостью, никаких ошибок не выводит

    Вывод полностью из консоли приведите (это значит не только ошибки,но и информация выдаваемая командой) - Get-WmiObject win32_userprofile | FT localpath
    • Предложено в качестве ответа gdidim 22 марта 2021 г. 10:18
    • Отменено предложение в качестве ответа gdidim 22 марта 2021 г. 10:18
    19 октября 2012 г. 11:04
    Отвечающий
  • Работает и через  winrm. Скрин приведите(заменить на путь проблемного пользователя):

    gwmi win32_userprofile -filter "localpath='C:\\Users\\maxim'"

    3 ноября 2015 г. 9:32
    Отвечающий