|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Снегерировал нейросетью скрип но нужна доработка |
|
|
PowerShell - [решено] Снегерировал нейросетью скрип но нужна доработка
|
|
Пользователь Сообщения: 79 |
Добрый день.
Помогите доработать скрипт. Мне нужно было сгенерировать все варианты почтового адреса [email protected] меняя в адресе местами точки и тире с помощью скрипта PowerShell и вывести результат в отдельный файл. Но в нем во первых в самом начале после "v" удаляется "." и самом конце удаляется буква "v". То есть выводит скрип так: [email protected] [email protected] Сам скрипт
# Исходный почтовый адрес
$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 |
|
Ветеран Сообщения: 4631
|
Профиль | Отправить PM | Цитировать Цитата aVitaliy:
|
|
|
Последний раз редактировалось NickM, 14-04-2025 в 19:25. Отправлено: 19:15, 14-04-2025 | #2 |
|
Пользователь Сообщения: 79
|
Профиль | Отправить PM | Цитировать NickM, сработало спасибо.
Еще не понятно почему при выводе в файл удаляется точка после буквы "v" Вместо v.[email protected] Выводит слитно без точки после 2-й буквы vi[email protected] |
|
Отправлено: 19:24, 14-04-2025 | #3 |
|
Ветеран Сообщения: 4631
|
Профиль | Отправить PM | Цитировать Цитата aVitaliy:
|
|
|
Отправлено: 19:25, 14-04-2025 | #4 |
|
Пользователь Сообщения: 79
|
Профиль | Отправить PM | Цитировать NickM, Да только увидел, когда отправил.
Все работает теперь отлично. Большое спасибо за помощь! |
|
|
Отправлено: 19:26, 14-04-2025 | #5 |
|
fascinating rhythm Сообщения: 6697
|
Профиль | Отправить PM | Цитировать 0..4095 |% {
$i = ([Convert]::ToString($_,2).PadLeft(12,'0') -replace '0','-' -replace '1','.' ).ToCharArray()
"v"+$i[0]+"i"+$i[1]+"t"+$i[2]+"a"+$i[3]+"l"+$i[4]+"i"+$i[5]+"k"+$i[6]+"an"+$i[7]+"tr"+$i[8]+"ak"+$i[9]+"xi"+$i[10]+"mo"+$i[11]+"[email protected]"
} > C:\temp\email_combinations.txt
|
|
------- Последний раз редактировалось DJ Mogarych, 14-04-2025 в 22:22. Отправлено: 22:16, 14-04-2025 | #6 |
|
Deadooshka Сообщения: 2565
|
Профиль | Отправить 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 Сообщения: 1234
|
Профиль | Отправить 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 | |
|