Это не очень хорошее решение для powershell.Это будет нормально для локальной политики безопасности.
- Перейдите к запуску и введите SecPol.msc
- Перейдите к Политике учетной записи> Политика паролей> Пароль должен соответствовать требованиям сложности
- Установить для включения.
- Установить минимальную длину пароля
- Установить максимальный срок действия пароля
Поэтому я решил написать несколько функций, чтобы позаботиться обо всем этомчерез Powershell для вас.
Вы можете получить и отредактировать Политику безопасности с помощью этой функции Parse-SecPol
.Это превратит весь конфигурационный файл в объект PSobject, чтобы вы могли изменять свойства и сортировать их или все, что вы хотите сделать.
Следующим является Set-SecPol
, что позволит вам восстановить объект обратно в локальную политику безопасности..
Параметр -CfgFile
- это место, в котором вы хотите сохранить файл конфигурации.
Вот полный сценарий с примером (должен быть запущен от имени администратора)
Function Parse-SecPol($CfgFile){
secedit /export /cfg "$CfgFile" | out-null
$obj = New-Object psobject
$index = 0
$contents = Get-Content $CfgFile -raw
[regex]::Matches($contents,"(?<=\[)(.*)(?=\])") | %{
$title = $_
[regex]::Matches($contents,"(?<=\]).*?((?=\[)|(\Z))", [System.Text.RegularExpressions.RegexOptions]::Singleline)[$index] | %{
$section = new-object psobject
$_.value -split "\r\n" | ?{$_.length -gt 0} | %{
$value = [regex]::Match($_,"(?<=\=).*").value
$name = [regex]::Match($_,".*(?=\=)").value
$section | add-member -MemberType NoteProperty -Name $name.tostring().trim() -Value $value.tostring().trim() -ErrorAction SilentlyContinue | out-null
}
$obj | Add-Member -MemberType NoteProperty -Name $title -Value $section
}
$index += 1
}
return $obj
}
Function Set-SecPol($Object, $CfgFile){
$SecPool.psobject.Properties.GetEnumerator() | %{
"[$($_.Name)]"
$_.Value | %{
$_.psobject.Properties.GetEnumerator() | %{
"$($_.Name)=$($_.Value)"
}
}
} | out-file $CfgFile -ErrorAction Stop
secedit /configure /db c:\windows\security\local.sdb /cfg "$CfgFile" /areas SECURITYPOLICY
}
$SecPool = Parse-SecPol -CfgFile C:\test\Test.cgf
$SecPool.'System Access'.PasswordComplexity = 1
$SecPool.'System Access'.MinimumPasswordLength = 8
$SecPool.'System Access'.MaximumPasswordAge = 60
Set-SecPol -Object $SecPool -CfgFile C:\Test\Test.cfg