Сценарий Powershell для сообщения о параметрах политики блокировки учетной записи? - PullRequest
0 голосов
/ 07 февраля 2020

У меня есть несколько компьютеров вне сети, не разрешено устанавливать модуль PS AD.

Все, что я хочу сделать, это использовать Powershell, чтобы сообщить о некоторых настройках блокировки учетной записи в частности, порог блокировки, продолжительность блокировки, а также, заблокирован ли данный компьютер или нет.

Все, что я обнаружил во время поиска, - это информация с использованием модуля Active Directory PS. Кроме того, другие ссылки, касающиеся удаленного доступа. Ни то, ни другое не соответствует моим потребностям.

Я также искал ключи реестра , относящиеся к «локальным» настройкам блокировки, но ничего не нашел (например, ссылается только на remoteaccess maxDenial; не локальные настройки).

Кроме запуска gpedit и просмотра локальной политики, я надеялся, что будет способ использовать Powershell для простого отчета о текущих локальных настройках .

В любом случае, помощь / указатели / знания будут высоко оценены.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2020

Ах, ограничено, значит, вы в пресловутом улове22.

Тем не менее, если они не являются частью домена, то это означает, что вам или кому-то пришлось также выполнять эти настройки вручную. Поэтому я не уверен, каким образом появился бы командлет AD, поскольку это не присоединенные к домену машины, а параметры находятся в локальной политике.

Итак, secedit.exe - ваш инструмент для этих усилий или используйте модуль PolicyFileEditor в MS powershellgallery.com и / или один из других.

Find-Module -Name '*policy*' | Format-Table -AutoSize

Version  Name                                          Repository Description                                                                                       
-------  ----                                          ---------- -----------                                                                                       
...
3.0.1    PolicyFileEditor                              PSGallery  Commands and DSC resource for modifying Administrative Templates settings in local GPO registry...
2.10.0.0 SecurityPolicyDsc                             PSGallery  This module is a wrapper around secedit.exe which provides the ability to configure user rights...
...
0.3      GPRegistryPolicy                              PSGallery  Module with cmdlets to work with GP Registry Policy .pol files                                    
0.2      GPRegistryPolicyParser                        PSGallery  Module with parser cmdlets to work with GP Registry Policy .pol files                             
1.1.0    GPRegistryPolicyDsc                           PSGallery  This resource module contains DSC resources used to apply and manage local group policies by mo...
...
1.0.1    GroupPolicyHelper                             PSGallery  Functions that ease your daily Group Policy Work                                                  
1.3.2    Indented.SecurityPolicy                       PSGallery  Security management functions and resources                                                       
...
1.0      ADPolicyAudit                                 PSGallery  Module to review infrastructure password policy 

Для Secedit.exe есть несколько сообщений о таком сценарии использования, и быстрый поиск в Интернете с использованием 'secedit lockout policy' покажет вам это. Например, вы можете получить такого рода усилия .

Clear-Host
$temp = "D:\temp"
$file = "$temp\pol.txt"
#[string] $readableNames

$outHash = @{}

$process = [diagnostics.process]::Start("secedit.exe", "/export /cfg $file /areas securitypolicy")
$process.WaitForExit()

$in = get-content $file

foreach ($line in $in) 
{
    if ($line -like "*password*" -or $line -like "*lockout*" -and $line -notlike "machine\*" -and $line -notlike "require*" ) 
    {
        $policy = $line.substring(0,$line.IndexOf("=") - 1)

        switch ($policy){
        "passwordhistorysize"   {$policy = "Enforce Password Policy"}
        "maximumpasswordage"    {$policy = "Maximum Password Age"}
        "minimumpasswordage"    {$policy = "Minimum Password Age"}
        "minimumpasswordlength" {$policy = "Minimum Password Length"}
        "passwordcomplexity"    {$policy = "Password must meet complexity requirements"}
        "cleartextpassword"     {$policy = "Store Passwords Using Reversible Encryption"}
        "lockoutduration"       {$policy = "Account Lockout Duration"}
        "lockoutbadaccount"     {$policy = "Account Lockout Threshold"}
        "resetlockoutcount"     {$policy = "Reset Account Lockout Counter After"}
        }

        $values = $line.substring($line.IndexOf("=") + 1,$line.Length - ($line.IndexOf("=") + 1))
        #$values =  $values.Trim({}) -split ","

        $outHash.Add($policy,$values) #output edited version
    }
}
$outHash | 
Format-Table -AutoSize
1 голос
/ 16 апреля 2020

Обнаружение этой информации из net учетных записей, в конечном счете, сработало для меня, и я смог написать скрипт, который быстро отображал информацию о политике блокировки. Вот вывод 'net account':

PS C:\Users\Siduser> net accounts

Force user logoff how long after time expires?:       0
Minimum password age (days):                          1
Maximum password age (days):                          60
Minimum password length:                              14
Length of password history maintained:                24
Lockout threshold:                                    3
Lockout duration (minutes):                           15
Lockout observation window (minutes):                 15
Computer role:                                        WORKSTATION
The command completed successfully.

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

$lockoutObj = net accounts | Select-string threshold
$lockoutStr = $lockoutObj.ToString()
$lockoutStr -match '\d{1,3}' | out-null
$LOthreshold = $matches[0]

PS C:\Users\Siduser> echo $LO_threshold
3

Если вам нужно установить блокировку Порог использования этой команды (повышенные привилегии необходимы):

PS C:\Users\Siduser> net accounts /lockoutthreshold:10
The command completed successfully

PS C:\Users\Siduser> net accounts

Force user logoff how long after time expires?:       0
Minimum password age (days):                          1
Maximum password age (days):                          60
Minimum password length:                              14
Length of password history maintained:                24
Lockout threshold:                                    10
Lockout duration (minutes):                           15
Lockout observation window (minutes):                 15
Computer role:                                        WORKSTATION
The command completed successfully.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...