none
Reset и Disable Comp Account PowerShell RRS feed

  • Вопрос

  • Приветствую всех.

    Нужна помощь. Хочу написать скрипт в PS, который запросит имя комьютера в АД и сделает ему Reset и после Disable.

    С помощью гугла нашел часть, а дальше никак.

    $pc = read-host –Prompt “Input computer name to reset“
    Get-ADComputer $pc | Set-ADAccountPassword -Reset | Disable-ADAccount -Identity "$pc"

    Первая строчка всё ок отрабатывает. Запрашивает имя компьютера в АД, после Get-adcomputer тоже вытягивает из переменной $pc, а вот дальше Set-AdaccountPassword запрашивает ввести пароль для этой учетки. Но мне надо, что бы скрипт просто сделал ресет и отключил учетку. По аналогии с GUI


Ответы

  • Можно так попробовать сброс УЗ:

    Get-ADComputer -Identity "computername" | % {
      dsmod computer $_.distinguishedName -reset
    }

    • Помечено в качестве ответа Farrukh Yakhyaev 7 мая 2020 г. 8:15
  • Приветствую всех.

    Нужна помощь. Хочу написать скрипт в PS, который запросит имя комьютера в АД и сделает ему Reset и после Disable.

    С помощью гугла нашел часть, а дальше никак.

    $pc = read-host –Prompt “Input computer name to reset“
    Get-ADComputer $pc | Set-ADAccountPassword -Reset | Disable-ADAccount -Identity "$pc"

    Первая строчка всё ок отрабатывает. Запрашивает имя компьютера в АД, после Get-adcomputer тоже вытягивает из переменной $pc, а вот дальше Set-AdaccountPassword запрашивает ввести пароль для этой учетки. Но мне надо, что бы скрипт просто сделал ресет и отключил учетку. По аналогии с GUI


    $pc = read-host Prompt Input computer name to reset

    $Password = ConvertTo-SecureString -AsPlainText $([system.web.security.membership]::GeneratePassword(16, 4)) -Force Get-ADComputer $pc | Set-ADAccountPassword -NewPassword $Password -Reset | Disable-ADAccount -Identity "$pc"

    Создайте какой-то пароль и подайте в параметр -NewPassword



    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа Farrukh Yakhyaev 7 мая 2020 г. 8:15
    Модератор
  • Попробуйте так

    $scriptBlock = {
        write-host test
        read-host 'Press any Enter for continue'
    }
    Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Verb RunAs -ArgumentList @('-command', $scriptBlock)

    В скрипт блок поместите свои команды а все остальное можно оставить как есть

    Второй вариант выглядит так

    $scriptBlock = {
        write-host test
        read-host 'Press any Enter for continue'
    }
    $Creds = Get-Credential -Message "Provide credentials for performing operation"
    Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -RunAs $Creds -ArgumentList @('-command', $scriptBlock)




    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа Farrukh Yakhyaev 7 мая 2020 г. 8:50
    Модератор

Все ответы

  • Приветствую всех.

    Нужна помощь. Хочу написать скрипт в PS, который запросит имя комьютера в АД и сделает ему Reset и после Disable.

    С помощью гугла нашел часть, а дальше никак.

    $pc = read-host –Prompt “Input computer name to reset“
    Get-ADComputer $pc | Set-ADAccountPassword -Reset | Disable-ADAccount -Identity "$pc"

    Первая строчка всё ок отрабатывает. Запрашивает имя компьютера в АД, после Get-adcomputer тоже вытягивает из переменной $pc, а вот дальше Set-AdaccountPassword запрашивает ввести пароль для этой учетки. Но мне надо, что бы скрипт просто сделал ресет и отключил учетку. По аналогии с GUI


    $pc = read-host Prompt Input computer name to reset

    $Password = ConvertTo-SecureString -AsPlainText $([system.web.security.membership]::GeneratePassword(16, 4)) -Force Get-ADComputer $pc | Set-ADAccountPassword -NewPassword $Password -Reset | Disable-ADAccount -Identity "$pc"

    Создайте какой-то пароль и подайте в параметр -NewPassword



    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа Farrukh Yakhyaev 7 мая 2020 г. 8:15
    Модератор
  • Можно так попробовать сброс УЗ:

    Get-ADComputer -Identity "computername" | % {
      dsmod computer $_.distinguishedName -reset
    }

    • Помечено в качестве ответа Farrukh Yakhyaev 7 мая 2020 г. 8:15
  • Приветствую всех.

    Нужна помощь. Хочу написать скрипт в PS, который запросит имя комьютера в АД и сделает ему Reset и после Disable.

    С помощью гугла нашел часть, а дальше никак.

    $pc = read-host –Prompt “Input computer name to reset“
    Get-ADComputer $pc | Set-ADAccountPassword -Reset | Disable-ADAccount -Identity "$pc"

    Первая строчка всё ок отрабатывает. Запрашивает имя компьютера в АД, после Get-adcomputer тоже вытягивает из переменной $pc, а вот дальше Set-AdaccountPassword запрашивает ввести пароль для этой учетки. Но мне надо, что бы скрипт просто сделал ресет и отключил учетку. По аналогии с GUI


    $pc = read-host –Prompt “Input computer name to reset“

    $Password = ConvertTo-SecureString -AsPlainText $([system.web.security.membership]::GeneratePassword(16, 4)) -Force Get-ADComputer $pc | Set-ADAccountPassword -NewPassword $Password -Reset | Disable-ADAccount -Identity "$pc"

    Создайте какой-то пароль и подайте в параметр -NewPassword



    The opinion expressed by me is not an official position of Microsoft

    А не подскажите, почему Reset Account  (Computer) через GUI не запрашивает никакого ввода пароля?
  • это вопрос реализации командлета 

    есть тулзы которые позволяют поломать ад одним неловким движением руки, но в PowerShell разработчики иногда ограничивают функционал до безопасного уровня и иногда появляются такие проявления


    The opinion expressed by me is not an official position of Microsoft

    Модератор
  • Спасибо. Решил комбинацией команд Вектора и Алексея. 

    #Ввод имени комьютера
    $pc = read-host –Prompt “Input computer name to reset“
    
    # Reset Computer Account
    Get-ADComputer $pc | % {
      dsmod computer $_.distinguishedName -reset
    }
    # Disable Computer Account
    Get-ADComputer $pc | Disable-ADAccount

  • И ещё вопрос. Может как то можно задать, что бы я запускал скрип (reset.ps1) он запускался с админ правами ( если нет, то запрашивал их)?

    Не хочу через реестр добавлять Run us для PS

  • Ему не нужны права админа, просто делегируйте УЗ (под которой работает скрипт) соответствующие права на OU, где лежат объекты.

    P.S. Отключенные УЗ удобно переносить в отдельную OU.

  • Ему не нужны права админа, просто делегируйте УЗ (под которой работает скрипт) соответствующие права на OU, где лежат объекты.

    P.S. Отключенные УЗ удобно переносить в отдельную OU.

    Вся суть, в том, что в организации, в которой работаю, сильно большая иерархическая структура. Работаю под обычной учеткой. А для этой учетки, стоит только чтение для этой OU.

    Следовательно, когда нужны права на эту OU, у меня есть другая учетка (подключая флеш-ключ) я выбираю соответсвующую учетку. Вот и хочу, при запуске скрипта с ярлыка, что бы отобразилось окно, в которой я выберу нужную учетку. 

  • Попробуйте так

    $scriptBlock = {
        write-host test
        read-host 'Press any Enter for continue'
    }
    Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Verb RunAs -ArgumentList @('-command', $scriptBlock)

    В скрипт блок поместите свои команды а все остальное можно оставить как есть

    Второй вариант выглядит так

    $scriptBlock = {
        write-host test
        read-host 'Press any Enter for continue'
    }
    $Creds = Get-Credential -Message "Provide credentials for performing operation"
    Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -RunAs $Creds -ArgumentList @('-command', $scriptBlock)




    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа Farrukh Yakhyaev 7 мая 2020 г. 8:50
    Модератор
  • Попробуйте так

    $scriptBlock = {
        write-host test
        read-host 'Press any Enter for continue'
    }
    Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Verb RunAs -ArgumentList @('-command', $scriptBlock)

    В скрипт блок поместите свои команды а все остальное можно оставить как есть

    Второй вариант выглядит так

    $scriptBlock = {
        write-host test
        read-host 'Press any Enter for continue'
    }
    $Creds = Get-Credential -Message "Provide credentials for performing operation"
    Start-Process -FilePath C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -RunAs $Creds -ArgumentList @('-command', $scriptBlock)




    The opinion expressed by me is not an official position of Microsoft

    Ооо. То что надо. Спасибо