Показать полную графическую версию : [решено] Инкремент
Добрый день, всем
Вот есть скрипт
do {Write-Host password0$i; $i++}
while ($i -le 12 )
мне нужно чтобы он вывод написал в текстовый файл, при каждом запуске вместо инкремента вставлял значение до 12.
Если достигнет результата сбрасывать счетчик.
Это для создания скрипта для ежемесячной смены паролей!
Будут вопросы пишите!
Кто чем поможет, благодарен!
Foreigner
16-10-2015, 13:40
AZABAZA,
& { for ($i = 1; $i -le 12; $i++ ) { "pass0$i" }} | sc test.txt
Foreigner, Спасибо за помощь и отзыв.
но этот скрипт выполняет за один раз все пароли!
Нужно при запуске выполнять скрипт и что бы он записывал один пароль текстовый файл.
Foreigner, когда доходит до 12 что бы он сбросил и заново начал от 1
Foreigner
16-10-2015, 13:57
AZABAZA, Что-то как-то мутно..
Foreigner,
Ваш скрипт генерирует за один раз все 12 вариантов. А нужно запустил один раз он в текстовый файл записал "pass001"
При следующем запуске в текстовый файл записал "pass002"
А когда будет "pass012" чтобы не писал следующий раз "pass013" он сбрасывает счетчик и снова становится "pass001"
Foreigner
16-10-2015, 15:13
AZABAZA,
$ofs = ''
if (test-path test.txt) { $a = [int][string](get-content test.txt)[-2..-1] }
else { $a = 0 }
$a++
if ($a -gt 12) { $a = 1 }
set-content test.txt $('pass0{0:d2}' -f $a)
$a++
if ($a -gt 12) { $a = 1 } »
В данном случае можно упростить до:
$a %= 12
Foreigner
16-10-2015, 20:14
Iska, Тогда будет попадать '0' и не будет 12, т.е pass000...pass011, а надо pass001...pass012
Тут можно убрать первый else. Он явно лишний
Ах ты ж… И на старуху бывает проруха :(.
Да, красоты не получится. Придётся так:
$a = $a % 12 + 1
вместо того же.
Foreigner
16-10-2015, 20:38
Другое дело:
$ofs = ''
if (test-path test.txt) { $a = [int][string](get-content test.txt)[-2..-1] }
$a = $a % 12 + 1
set-content test.txt $('pass0{0:d2}' -f $a)
Foreigner, Iska,
Спасибо огромное :clapping: :clapping: :clapping: , выручили!
Благодарю вас!
Foreigner, Iska,
А есть ли возможность вызывать это в одном текстовом файле 2- и более раз?
Пример: USER1/pass012
USER2/pass012
USERn/pass012
И если хочу добавить простой текст перед паролем выдает ошибку
Cannot convert value "простой текст" to type "System.Int32". Error: "Input string was not in a corre
ct format."
At line:2 char:27
+ ... t-path test.txt) { $a = [int][string](get-content test.txt)[-2..-1] }
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromStringToInteger
:help: :dont-know
Foreigner, Iska,
Всем привет,
выходит вот такая ошибка если файл существует в директорий. А если удалить, то запускается без проблем!
в чем причина не подскажете светлые умы? :)
Cannot convert value "text;exit" to type "System.Int32".
Error: "Input string was not in a correct format."
At D:\test_bat\pp.ps1:2 char:29
+ ... \mco.bat) { $a = [int][string](get-content D:\mco.bat)[-2..-1]} {$b = ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromStringToInteger
Foreigner
06-11-2015, 14:47
AZABAZA, Откуда взялся 'text;exit' ? В текстовом файле должна быть единственная строка вида "pass001".."pass012"
Понятно что эту строку нельзя привести к типу integer (точнеe последние два символа 'it').
Скрипт берет все содержимое файла, если в файле несколько строк, то надо уточнить какую брать по порядку или какую по содержимому.
Foreigner,
текст взялся из скрипта. ниже скрипт
$ofs = ''
if (test-path D:\mco.bat) { $a = [int][string](get-content D:\mco.bat)[-2..-1]} {$b = [int][string](get-content D:\mco.bat)[-2..-1] }
$a = $a % 12 + 1
$b = $b % 12 + 1
set-Content D:\mco.bat "chcp 1251
set ORACLE_SID=DB"
[System.IO.File]::AppendAllText("D:\mco.bat", $('sqlplus"user/pass0{0:d2}' -f $b), [System.Text.Encoding]::ASCII)
[System.IO.File]::AppendAllText("D:\mco.bat", '@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=DATABASE)(Port=1521))(CONNECT_DATA=(SID=DB)))"', [System.Text.Encoding]::ASCII)
Add-Content D:\mco.bat $('')
[System.IO.File]::AppendAllText("D:\mco.bat", $('ALTER USER user IDENTIFIED BY pass0{0:d2};' -f $a), [System.Text.Encoding]::ASCII)
Add-Content D:\mco.bat $('')
[System.IO.File]::AppendAllText("D:\mco.bat", $('ALTER USER user IDENTIFIED BY pass0{0:d2};' -f $a), [System.Text.Encoding]::ASCII)
Add-Content D:\mco.bat $('')
[System.IO.File]::AppendAllText("D:\mco.bat", $('ALTER USER user IDENTIFIED BY pass0{0:d2};' -f $a), [System.Text.Encoding]::ASCII)
Add-Content D:\mco.bat $('')
[System.IO.File]::AppendAllText("D:\mco.bat", 'SELECT NAME FROM V$DATABASE;', [System.Text.Encoding]::ASCII)
Add-Content D:\mco.bat $('')
[System.IO.File]::AppendAllText("D:\mco.bat", 'exit', [System.Text.Encoding]::ASCII)
Add-Content D:\mco.bat $('')
Add-Content D:\mco.bat $('')
и такой скрипт еще 2 раза в одном ps1.
И этот скрипт выводит следующую ошибку:
Cannot convert value "exit" to type "System.Int32". Error: "Input string was no
t in a correct format."
At D:\Untitled5.ps1:2 char:29
+ ... \mco.bat) { $a = [int][string](get-content D:\mco.bat)[-2..-1]} {$b = ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvalidCastFromStringToInteger
Foreigner
09-11-2015, 08:29
Добавьте перед [-2..-1] еще [0]:
...(get-content D:\mco.bat)[0][-2..-1]...
Foreigner,
ошибка перестала выводится, но пароль не генерируется.
...(get-content D:\tuo.log)[0][-2..-1]}...
Foreigner,
Разобрался, не [0], а 4, 2 поставил номер поля :drug:
(get-content D:\tuo.log)[4][-3..-2]} { $b =[int][string](get-content D:\tuo.log)[2][-91..-90]}
Но вот тут другая проблема вылезла.
Если пишешь для двух переменных то он генерирует для первого переменного ($a), а если впереди прописать переменную ($b)
тогда он генерирует для ($b) :help:
$ofs = ''
if (test-path D:\tuo.log) { $a = [int][string](get-content D:\tuo.log)[4][-3..-2]} { $b =[int][string](get-content D:\tuo.log)[2][-91..-90]}
$a = $a % 12 + 1
$b = $b % 12 + 1....
У кого какие догадки есть?
С помощью IF/THEN/ELSE/ELSEIF можно решить проблему?
Спасибо Iska, Foreigner, Kazun
if (test-path D:\tuo.log) { $a = [int][string](get-content D:\tuo.log)[4][-3..-2]} { $b = [int][string](get-content D:\tuo.log)[2][-91..-90]}
заменить на :
if (test-path D:\tuo.log) {
$a = [int][string](get-content D:\tuo.log)[4][-3..-2]
$b = [int][string](get-content D:\tuo.log)[2][-91..-90]
}
Все решился =)
Добрый день, Iska, Foreigner, Kazun,
Нужен совет.
как скрыть тот пароль что в маске указано? чтобы пароль не был в открытом виде.
создать базу, заливать/выгружать пароль в виде хэш код с солью, что можете предложить?
Спасибо за любые советы.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.