|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Снегерировал нейросетью скрип но нужна доработка |
|
PowerShell - [решено] Снегерировал нейросетью скрип но нужна доработка
|
Пользователь Сообщения: 79 |
Добрый день.
Помогите доработать скрипт. Мне нужно было сгенерировать все варианты почтового адреса v.i.t.a.l.i.k.an.tr.ak.xi.mo.v@yandex.kz меняя в адресе местами точки и тире с помощью скрипта PowerShell и вывести результат в отдельный файл. Но в нем во первых в самом начале после "v" удаляется "." и самом конце удаляется буква "v". То есть выводит скрип так: vi.t.a.l-i-k.an.tr.ak-xi-mo.@yandex.kz vi.t.a.l-i-k.an.tr.ak-xi-mo-@yandex.kz Сам скрипт
# Исходный почтовый адрес $email = "v.i.t.a.l.i.k.an.tr.ak.xi.mo.v" $parts = $email -split '\.|-' # Разделяем адрес на части, используя точку и тире как разделители # Функция для генерации всех комбинаций точек и тире function Get-Combinations { param ( [int]$index, [string]$currentString, [string[]]$parts ) if ($index -eq $parts.Length - 1) { return $currentString # Возвращаем строку, когда достигли конца } else { $result = @() $result += Get-Combinations -index ($index + 1) -currentString ($currentString + $parts[$index] + ".") -parts $parts # Добавляем точку $result += Get-Combinations -index ($index + 1) -currentString ($currentString + $parts[$index] + "-") -parts $parts # Добавляем тире return $result } } # Запускаем генерацию комбинаций, начиная со второго элемента массива parts $combinations = Get-Combinations -index 1 -currentString $parts[0] -parts $parts # Добавляем "@yandex.kz" к каждой комбинации и выводим в файл $combinations | ForEach-Object { $_ + "@yandex.kz" } | Out-File "email_combinations.txt" Write-Host "Варианты почтовых адресов сохранены в файл email_combinations.txt" |
|
Отправлено: 18:48, 14-04-2025 |
Ветеран Сообщения: 4591
|
Профиль | Отправить PM | Цитировать Цитата aVitaliy:
|
|
Последний раз редактировалось NickM, 14-04-2025 в 19:25. Отправлено: 19:15, 14-04-2025 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 79
|
Профиль | Отправить PM | Цитировать NickM, сработало спасибо.
Еще не понятно почему при выводе в файл удаляется точка после буквы "v" Вместо v.i.t.a.l.i.k.an.tr.ak.xi.mo.v@yandex.kz Выводит слитно без точки после 2-й буквы vi.t.a.l.i.k.an.tr.ak.xi.mo.v@yandex.kz |
Отправлено: 19:24, 14-04-2025 | #3 |
Ветеран Сообщения: 4591
|
Профиль | Отправить PM | Цитировать Цитата aVitaliy:
|
|
Отправлено: 19:25, 14-04-2025 | #4 |
Пользователь Сообщения: 79
|
Профиль | Отправить PM | Цитировать NickM, Да только увидел, когда отправил.
Все работает теперь отлично. Большое спасибо за помощь! |
|
Отправлено: 19:26, 14-04-2025 | #5 |
fascinating rhythm Сообщения: 6660
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось DJ Mogarych, 14-04-2025 в 22:22. Отправлено: 22:16, 14-04-2025 | #6 |
Deadooshka Сообщения: 2555
|
Профиль | Отправить PM | Цитировать Идея с представлением набора символов в виде числа с соответствующим основанием и разрядностью неплоха. Максимальное число будет и количеством вариантов. В этом случае основание будет 2 (два символа), а разрядность = количество позиций этих символов в строке. Имеем 111111111111(двоичное) == 4095(десятичное). Но это всё можно вычислить и сделать "покрасивше".
$user = "v.i.t.a.l.i.k.an.tr.ak.xi.mo.v" $domain = "@yandex.kz" $chars = '.', '-' $regexp = '[{0}]' -f ([regex]::Escape($chars -join '')) $parts = $user -split $regexp # v{0}i{1}t{2}a{3}l{4}i{5}k{6}an{7}tr{8}ak{9}xi{10}mo{11}v $format_str = [regex]::Replace($user, $regexp, {"{$([int]($global:c++))}"}) $max_variants = [Math]::Pow($chars.length, $parts.length - 1) - 1 0..$max_variants | % { $num = [Convert]::ToString($_, $chars.length).PadLeft($parts.length - 1, '0') 0..($chars.length - 1) | % { $num = $num -replace "$_", $chars[$_] } ($format_str -f @($num.ToCharArray())) + $domain } > 'email_combinations.txt' |
Отправлено: 09:13, 15-04-2025 | #7 |
Crazy Сообщения: 1228
|
Профиль | Отправить PM | Цитировать Ну и ещё вариант:
Порылся в загашниках, нашел функцию перестановок символов... permutationwithrepetition.ps1 [cmdletbinding()] Param ( [string]$arr = '.-', [int]$count = 12 ) function perm ($values,$size,$offset){ $count = $values.length $array = new-object object[] $size for ($i = 0; $i -lt $size; $i++) { $selector = [math]::truncate($offset / [math]::pow($count,$i)) % $count $array[$i] = $values[$selector] } return $array } function permutations ($values, $size) { $Ar = [math]::pow($values.length, $size) $a = new-object object[] $Ar for ($i = 0; $i -lt $Ar; $i++) { $a[$i] = perm $values $size $i } return $a } $charr = $arr.tochararray() $out = permutations $charr $count foreach ($item in $out){$item -join ' '} $out.count Адаптировать под задачу несложно, если что... |
------- Отправлено: 12:52, 15-04-2025 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Медиа - Нужна помощь, игра проходит по системным требованиям но жутко лагает. (Payday 2) | krytoupapa | Microsoft Windows 8 и 8.1 | 10 | 05-08-2014 20:23 | |
Принтер - SCX-4727fd скрип | admz09 | Прочее железо | 12 | 23-10-2013 15:37 | |
VBS/WSH/JS - доработка javascript | Михаил11 | Скриптовые языки администрирования Windows | 1 | 08-04-2011 11:29 | |
Нужна помощь,но нет логов-ничего не запускается! | DIDIDIDIMA | Лечение систем от вредоносных программ | 12 | 18-12-2008 14:08 | |
[решено] Скрип | Горни | Непонятные проблемы с Железом | 17 | 25-09-2007 19:44 |
|