Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Добавить в код PowerShell переменную данных из txt файла (http://forum.oszone.net/showthread.php?t=354446)

temphard 28-10-2023 19:36 3019086

Добавить в код PowerShell переменную данных из txt файла
 
Здравствуйте.
Использую такой код 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%257Cg-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 может быть тысячи строк. И каждый номер строки в одном файле связан с номером строки в другом файле.
Пожалуйста помогите решить задачу. Для меня переменные - это пока что темный лес.
Спасибо.

NickM 28-10-2023 21:55 3019097

Цитата:

Цитата temphard
В файле appsession.txt всегда содержится только одна строка, которая определяет сессию.
»

Например так:
Код:

$appsession = Get-Content -Path .\appsession.txt
Цитата:

Цитата temphard
А в файлах 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 3019101

NickM,
Спасибо.
Но признаюсь, никак не пойму как мне это применить к моему коду.
Методом тыка пытаюсь вставить то здесь, то там, но не выходит.
Окажите милость, вставьте ваше решение в мой код.

NickM 28-10-2023 23:13 3019105

Попробуйте так, пути к файлам можете передать нужные Вам + проверьте на малом количестве запросов, 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%257Cg-recaptcha-response"
#Ваш код здесь заканчивается

}


temphard 29-10-2023 00:59 3019110

Цитата:

Цитата NickM
Попробуйте так... »

Отлично! Работает! Ваш наглядный пример поможет мне хотя бы немножко разобраться в переменных.
Огромное вам спасибо!

temphard 31-10-2023 11:41 3019223

NickM,
Еще один вопрос:
Можно ли мой код PowerShell запускать непосредственно в bat файле?

Сейчас код PowerShell я размещаю в файле myscript.ps1 и запускаю этот файл с помощью команды в *.bat файле:
Код:

powershell -executionpolicy RemoteSigned -file myscript.ps1
А мне нужно чтобы код PowerShell был размещен непосредственно в bat файле.
Такое возможно?

NickM 31-10-2023 11:52 3019225

Сценарий лежит рядом с *.cmd:
Код:

powershell.exe -noprofile -executionpolicy bypass -file "%~dp0myscript.ps1"
Цитата:

Цитата temphard
Можно ли мой код PowerShell запускать непосредственно в bat файле? »

В чём профит?

temphard 31-10-2023 11:57 3019227

Цитата:

Цитата NickM
В чём профит? »

Я использую Automatic Mouse and Keyboard. Там есть функция запуска Command.
Пишу скрипт, чтобы программа читала все необходимые данные и выполняла их непосредственно в Command. Для меня это будет намного удобнее.

Цитата:

Цитата NickM
Сценарий лежит рядом с *.cmd: »

Это ответ?
Здесь все равно используется файл myscript.ps1.
Или я что-то не так понял?

YuS_2 31-10-2023 12:45 3019229

Цитата:

Цитата temphard
Здесь все равно используется файл myscript.ps1.
Или я что-то не так понял? »

Вам шашечки или ехать?
В пакетных сценариях cmd, как правило, возникают проблемы с кодировкой, со спецсимволами и некоторые другие ограничения.
Вам привели строку, которую необходимо поместить в пакетный сценарий cmd и оттуда будет выполняться сценарий powershell - это наиболее корректный вариант, с минимизацией различных исключительных ситуаций, если так уж необходимо выполнять запуск именно из пакетного сценария cmd.
И да - это ответ на Ваш вопрос.

NickM 31-10-2023 12:54 3019230

Цитата:

Цитата temphard
Там есть функция запуска Command.
Пишу скрипт, чтобы программа читала все необходимые данные и выполняла их непосредственно в Command. »

Т.е. Вы хотите избежать использования файлов вообще? Даже без временных?

Готовых идей предложить не могу, т.к. никогда таким вопросом не задавался :dont-know .

Как вариант, можно было бы формировать/ извлекать временный файл из того же BASE64 или что-то типа того.
Какой-то огород горожу - речь же о cmd, а не powershell.

temphard 31-10-2023 13:15 3019231

Цитата:

Цитата NickM
Т.е. Вы хотите избежать использования файлов вообще? Даже без временных? »

Я использую переменные в самой Automatic Mouse and Keyboard.
Алгоритм такой:
С помощью переменных программа Automatic Mouse and Keyboard составляет код, как указано в самом начале моего вопроса:
Цитата:

Цитата temphard
Использую такой код PowerShell »

После этого мне этот код надо выполнить.
Я конечно же могу его записать в файл myscript.ps1 и выполнить через bat файл.
Но хочу избежать этой многократной записи (выполнять придется тысячи раз)
В программе Automatic Mouse and Keyboard я могу загрузить этот код в функцию Command.

Вопрос в следующем: что нужно добавить в данный код, чтобы он выполнился в функции Command?
По сути он должен выполняться в cmd/bat файле.

NickM 31-10-2023 13:54 3019234

Цитата:

Цитата temphard
Я использую переменные в самой "Automatic Mouse and Keyboard". »

Понятно, не знакома/ не пользуюсь;
Цитата:

Цитата temphard
Вопрос в следующем: что нужно добавить в данный код, чтобы он выполнился в функции Command? »

Может, пользователи указанной программы заглянут в тему и подскажут Вам.

DJ Mogarych 31-10-2023 16:08 3019248

https://github.com/RobotSoftAdmin/Au...PowerShell.amk


Время: 18:35.

Время: 18:35.
© OSzone.net 2001-