Показать полную графическую версию : [решено] Добавить в код PowerShell переменную данных из txt файла
temphard
28-10-2023, 19:36
Здравствуйте.
Использую такой код PowerShell
$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$session.Cookies.Add((New-Object System.Net.Cookie("AppSession", "7d17c52a80d9c25d288ab1585", "/", "exe.io")))
$session.Cookies.Add((New-Object System.Net.Cookie("csrfToken", "c7d46cce802f956bde8762f34b65daa4fbcf6d6abdfe555b880fb10f9c114c8e4c23c2bd6934cb3", "/", "exe.io")))
Invoke-WebRequest -UseBasicParsing -Uri "https: //exe.io/member/links/hide/CdrhjyEjVRs" `
-Method POST `
-WebSession $session `
-Headers @{
"Accept-Encoding" = "gzip, deflate, br"
"Upgrade-Insecure-Requests" = "1"
"Sec-Fetch-Dest" = "document"
"Sec-Fetch-Mode" = "navigate"
"Sec-Fetch-Site" = "same-origin"
"Sec-Fetch-User" = "?1"
"TE" = "trailers"
} `
-Body "_method=POST&_csrfToken=c7d46cce802f956bde8762f34b65daa4fbcf6d6abdfe555b880fb10f9c114c8e4c23c2bd6934cb3&_Token%5Bfields%5D=28181cf9aceff27%3A&_Token%5Bunlocked%5D=adcopy_challenge%257Cadcopy_response%257Ccaptcha_code%257Ccaptcha_namespace%257 Cg-recaptcha-response"
Нужно в определенных местах, (выделенных жирным шрифтом) вставить переменную, чтобы эти данные брались из отдельных txt файлов.
Например:
7d17c52a80d9c25d288ab1585 из файла appsession.txt
https: //exe.io/member/links/hide/CdrhjyEjVRs из файла url.txt
28181cf9aceff27%3A из файла token.txt
В файле appsession.txt всегда содержиться только одна строка, которая определяет сессию.
А в файлах url.txt и token.txt может быть тысячи строк. И каждый номер строки в одном файле связан с номером строки в другом файле.
Пожалуйста помогите решить задачу. Для меня переменные - это пока что темный лес.
Спасибо.
В файле appsession.txt всегда содержится только одна строка, которая определяет сессию.
»
Например так:
$appsession = Get-Content -Path .\appsession.txt
А в файлах url.txt и token.txt может быть тысячи строк. И каждый номер строки в одном файле связан с номером строки в другом файле. »
Например так:
0..(Get-Content -Path .\url.txt | measure).Count | ForEach-Object {
$url = (Get-Content -Path .\url.txt)[$_];
$token = (Get-Content -Path .\token.txt)[$_]
}
temphard
28-10-2023, 22:27
NickM,
Спасибо.
Но признаюсь, никак не пойму как мне это применить к моему коду.
Методом тыка пытаюсь вставить то здесь, то там, но не выходит.
Окажите милость, вставьте ваше решение в мой код.
Попробуйте так, пути к файлам можете передать нужные Вам + проверьте на малом количестве запросов, 1-2:
$appsession = Get-Content -Path .\appsession.txt
1..(Get-Content -Path .\url.txt | measure).Count | ForEach-Object {
$url = (Get-Content -Path .\url.txt)[$_-1];
$token = (Get-Content -Path .\token.txt)[$_-1]
#Ваш код здесь начинается
$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$session.Cookies.Add((New-Object System.Net.Cookie("AppSession", "$appsession", "/", "exe.io")))
$session.Cookies.Add((New-Object System.Net.Cookie("csrfToken", "c7d46cce802f956bde8762f34b65daa4fbcf6d6abdfe555b880fb10f9c114c8e4c23c2bd6934cb3", "/", "exe.io")))
Invoke-WebRequest -UseBasicParsing -Uri "$url" `
-Method POST `
-WebSession $session `
-Headers @{
"Accept-Encoding" = "gzip, deflate, br"
"Upgrade-Insecure-Requests" = "1"
"Sec-Fetch-Dest" = "document"
"Sec-Fetch-Mode" = "navigate"
"Sec-Fetch-Site" = "same-origin"
"Sec-Fetch-User" = "?1"
"TE" = "trailers"
} `
-Body "_method=POST&_csrfToken=c7d46cce802f956bde8762f34b65daa4fbcf6d6abdfe555b880fb10f9c114c8e4c23c2bd6934cb3&_Token%5Bfields%5D=$token&_Token%5Bunlocked%5D=adcopy_challenge%257Cadcopy_response%257Ccaptcha_code%257Ccaptcha_namespace%257 Cg-recaptcha-response"
#Ваш код здесь заканчивается
}
temphard
29-10-2023, 00:59
Попробуйте так... »
Отлично! Работает! Ваш наглядный пример поможет мне хотя бы немножко разобраться в переменных.
Огромное вам спасибо!
temphard
31-10-2023, 11:41
NickM,
Еще один вопрос:
Можно ли мой код PowerShell запускать непосредственно в bat файле?
Сейчас код PowerShell я размещаю в файле myscript.ps1 и запускаю этот файл с помощью команды в *.bat файле:
powershell -executionpolicy RemoteSigned -file myscript.ps1
А мне нужно чтобы код PowerShell был размещен непосредственно в bat файле.
Такое возможно?
Сценарий лежит рядом с *.cmd:
powershell.exe -noprofile -executionpolicy bypass -file "%~dp0myscript.ps1"
Можно ли мой код PowerShell запускать непосредственно в bat файле? »
В чём профит?
temphard
31-10-2023, 11:57
В чём профит? »
Я использую Automatic Mouse and Keyboard. Там есть функция запуска Command.
Пишу скрипт, чтобы программа читала все необходимые данные и выполняла их непосредственно в Command. Для меня это будет намного удобнее.
Сценарий лежит рядом с *.cmd: »
Это ответ?
Здесь все равно используется файл myscript.ps1.
Или я что-то не так понял?
Здесь все равно используется файл myscript.ps1.
Или я что-то не так понял? »
Вам шашечки или ехать?
В пакетных сценариях cmd, как правило, возникают проблемы с кодировкой, со спецсимволами и некоторые другие ограничения.
Вам привели строку, которую необходимо поместить в пакетный сценарий cmd и оттуда будет выполняться сценарий powershell - это наиболее корректный вариант, с минимизацией различных исключительных ситуаций, если так уж необходимо выполнять запуск именно из пакетного сценария cmd.
И да - это ответ на Ваш вопрос.
Там есть функция запуска Command.
Пишу скрипт, чтобы программа читала все необходимые данные и выполняла их непосредственно в Command. »
Т.е. Вы хотите избежать использования файлов вообще? Даже без временных?
Готовых идей предложить не могу, т.к. никогда таким вопросом не задавался :dont-know .
Как вариант, можно было бы формировать/ извлекать временный файл из того же BASE64 или что-то типа того.
Какой-то огород горожу - речь же о cmd, а не powershell.
temphard
31-10-2023, 13:15
Т.е. Вы хотите избежать использования файлов вообще? Даже без временных? »
Я использую переменные в самой Automatic Mouse and Keyboard.
Алгоритм такой:
С помощью переменных программа Automatic Mouse and Keyboard составляет код, как указано в самом начале моего вопроса:
Использую такой код PowerShell »
После этого мне этот код надо выполнить.
Я конечно же могу его записать в файл myscript.ps1 и выполнить через bat файл.
Но хочу избежать этой многократной записи (выполнять придется тысячи раз)
В программе Automatic Mouse and Keyboard я могу загрузить этот код в функцию Command.
Вопрос в следующем: что нужно добавить в данный код, чтобы он выполнился в функции Command?
По сути он должен выполняться в cmd/bat файле.
Я использую переменные в самой "Automatic Mouse and Keyboard". »
Понятно, не знакома/ не пользуюсь;
Вопрос в следующем: что нужно добавить в данный код, чтобы он выполнился в функции Command? »
Может, пользователи указанной программы заглянут в тему и подскажут Вам.
DJ Mogarych
31-10-2023, 16:08
https://github.com/RobotSoftAdmin/Automatic-Mouse-and-Keyboard-Samples/blob/main/PowerShell.amk
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.