none
Принудительная смена пароля для всех пользователей RRS feed

  • Вопрос

  • Доброго времени суток!

    Есть терминальный сервер под управлением Windows 2008 R2. Не в домене. На нем заведено порядка 350 пользователей. Теперь необходимо всем назначить принудительную смену пароля при первом входе. Нашел единственное решение (кроме ручной правки) использовать скрипт на vbScript. Данный скрипт создает пользователя, затем изменяет его параметры, а мне надо изменить параметр смены пароля для всех пользователей. В написании скриптов я не селен, может у кого есть уже готовое решение?

    18 ноября 2015 г. 20:31

Ответы

  • [ADSI]$CompName = "WinNT://$env:COMPUTERNAME"
    $UserList = $CompName.Children | where {$_.Class -eq 'user'}
    foreach ($User in $UserList) {
            $User.put("userflags", 8389153)
            $User.setinfo()
            $User.refresh
    }

    Еще кошерный вариант =) Правда с использованием дескриптора

    • Помечено в качестве ответа Rinat Moustafin 19 ноября 2015 г. 17:19
    19 ноября 2015 г. 10:59
  • Здравствуйте!

    PS не пробовали?

    ([ADSI]"WinNT://localhost").PsBase.Children | ?{ $_.Class -eq "user" } | %{
      # Request the PasswordExpired attribute for the user
      # If the current value is 0 the flag is no set
      If ($_.Get("PasswordExpired") -eq 0)
      {
        # Set the flag
        $_.Put("PasswordExpired", 1)
        # Apply the change
        $_.SetInfo()
      }
    }

    В блокноте создайте файлик, скопируйте код и сохраните в виде имя. ps1 далее, запустите повершел от имени админа и запустите скрипт.



    • Изменено Zaza Abramov 18 ноября 2015 г. 22:25
    • Помечено в качестве ответа Rinat Moustafin 19 ноября 2015 г. 17:13
    18 ноября 2015 г. 22:21
  • for /f "tokens=1 skip=3" %a in ('net user') do net user %a /LOGONPASSWORDCHG:yes

    ругнется на последней строчке, но не критично

    • Помечено в качестве ответа Rinat Moustafin 19 ноября 2015 г. 17:13
    19 ноября 2015 г. 9:19

Все ответы

  • Да выдели всех пользаков, нажми свойства, тыкни галочку "User must change password at next logon", далее укажи какие свойства тебе нужны и все. Или я неправильно понял задачу?
    18 ноября 2015 г. 21:02
  • Так в AD можно сделать, а с локальными учетными записями не получается. Повторю - сервер не в домене
    18 ноября 2015 г. 21:22
  • Здравствуйте!

    PS не пробовали?

    ([ADSI]"WinNT://localhost").PsBase.Children | ?{ $_.Class -eq "user" } | %{
      # Request the PasswordExpired attribute for the user
      # If the current value is 0 the flag is no set
      If ($_.Get("PasswordExpired") -eq 0)
      {
        # Set the flag
        $_.Put("PasswordExpired", 1)
        # Apply the change
        $_.SetInfo()
      }
    }

    В блокноте создайте файлик, скопируйте код и сохраните в виде имя. ps1 далее, запустите повершел от имени админа и запустите скрипт.



    • Изменено Zaza Abramov 18 ноября 2015 г. 22:25
    • Помечено в качестве ответа Rinat Moustafin 19 ноября 2015 г. 17:13
    18 ноября 2015 г. 22:21
  • for /f "tokens=1 skip=3" %a in ('net user') do net user %a /LOGONPASSWORDCHG:yes

    ругнется на последней строчке, но не критично

    • Помечено в качестве ответа Rinat Moustafin 19 ноября 2015 г. 17:13
    19 ноября 2015 г. 9:19
  • [ADSI]$CompName = "WinNT://$env:COMPUTERNAME"
    $UserList = $CompName.Children | where {$_.Class -eq 'user'}
    foreach ($User in $UserList) {
            $User.put("userflags", 8389153)
            $User.setinfo()
            $User.refresh
    }

    Еще кошерный вариант =) Правда с использованием дескриптора

    • Помечено в качестве ответа Rinat Moustafin 19 ноября 2015 г. 17:19
    19 ноября 2015 г. 10:59
  • [ADSI]$CompName = "WinNT://$env:COMPUTERNAME"
    $UserList = $CompName.Children | where {$_.Class -eq 'user'}
    foreach ($User in $UserList) {
            $User.put("userflags", 8389153)
            $User.setinfo()
            $User.refresh
    }

    Еще кошерный вариант =) Правда с использованием дескриптора

    Ваш вариант сбросил все настройки у всех пользователей и активировал гостевую учетку. Тоже полезная вещь, пригодится :)
    19 ноября 2015 г. 17:18