Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Uragan66, например:
Код: Выделить весь код
function Get-RandomPass {
  [CmdletBinding()]
  param(
    [Parameter()][Byte]$Length = 8, # немного сэкономим на памяти
    [Parameter()][ValidateSet('U', 'L', 'N', 'S')][Alias('c')]
    [Char[]]$CharSets = 'ULNS',
    [Parameter()][Byte]$NumLimit = 3
  )

  end {
    if ($NumLimit -ge $Length) {
      throw [InvalidOperationException]::new('Вне массива.')
    }

    $arr = [Linq.Enumerable]::SelectMany(
      [Object[]]@{U='A'..'Z';L='a'..'z';N=( # сразу ограничиваем количество цифр
          Get-Random ('0'..'9') -Count $NumLimit
        );S=('!'..'z').Where{$_ -notmatch '[0-9a-z]'}
      }[[String[]]$CharSets], [Func[Object, [Object[]]]]{$args[0]}
    ).ToArray()
    -join (Get-Random (( # просто перемешиваем полученный массив
      Get-Random $arr[0..($arr.Length - $NumLimit - 1)] -Count ($Length - $NumLimit)
    ) + $arr[($NumLimit * -1)..-1]) -Shuffle)
  }
}
Пример использования:
Код: Выделить весь код
Get-RandomPass -c lsn
Прочую мишуру навесите сами.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:28, 30-06-2021 | #5