os:win:localadmins
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
os:win:localadmins [19.09.2019 14:39] – [Костыли] viacheslav | os:win:localadmins [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ===== Управление паролями локальных админов в домене ===== | ||
+ | ==== Нормальное решение ==== | ||
+ | [[https:// | ||
+ | ==== Костыли ==== | ||
+ | В Powershell 5.1 есть команда Set-LocalUser, | ||
+ | При отсутствии возможности оперативно расставить Powershell 5.1 по сети, можно действовать через ADSI. | ||
+ | |||
+ | Проверка прав локального админа Администратор | ||
+ | <code powershell> | ||
+ | Function Convert-UserFlag | ||
+ | Param ($UserFlag) | ||
+ | $List = New-Object System.Collections.ArrayList | ||
+ | Switch | ||
+ | ($UserFlag -BOR 0x0001) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0002) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0008) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0010) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0020) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0040) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0080) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0100) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0200) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x0800) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x1000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x2000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x10000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x20000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x40000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x80000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x100000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x200000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x400000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x800000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x1000000) {[void]$List.Add(' | ||
+ | ($UserFlag -BOR 0x04000000) {[void]$List.Add(' | ||
+ | } | ||
+ | $List -join ', ' | ||
+ | } | ||
+ | |||
+ | (Get-ADComputer -Filter " | ||
+ | echo " | ||
+ | Convert-UserFlag -UserFlag ([ADSI]" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | <code powershell> | ||
+ | $ADS_UF_DONT_EXPIRE_PASSWD = 0x00010000 | ||
+ | $set_password_never_expires = $true | ||
+ | |||
+ | $adsi = [ADSI]" | ||
+ | $adsi.Children | Where-Object { $_.SchemaClassName -eq ' | ||
+ | $is_set = ($_.UserFlags.Value -band $ADS_UF_DONT_EXPIRE_PASSWD) -eq $ADS_UF_DONT_EXPIRE_PASSWD | ||
+ | |||
+ | if ($is_set -and -not $set_password_never_expires) { | ||
+ | Write-Verbose -Message " | ||
+ | $_.UserFlags = $_.UserFlags.Value -bxor $ADS_UF_DONT_EXPIRE_PASSWD | ||
+ | $_.SetInfo() | ||
+ | } elseif (-not $is_set -and $set_password_never_expires) { | ||
+ | Write-Verbose -Message " | ||
+ | $_.UserFlags = $_.UserFlags.Value -bor $ADS_UF_DONT_EXPIRE_PASSWD | ||
+ | $_.SetInfo() | ||
+ | } | ||
+ | } | ||
+ | </ |