2

Я создал командный файл, который принимает различные входные данные, а затем использует их в следующих командах. Этот сценарий прекрасно работает на моем компьютере, но когда я помещаю этот сценарий на другой компьютер и использую PsExec.exe для удаленного выполнения этого файла ... он не работает так, как он работал ... Пакетный файл работает нормально, если выполняется на том же компьютере ... эта ошибка возникает только в сети.

Это должно принять к входам и использовать их как ..

set /p ip = введите ip: [пользователь вводит 192.168.1.1]
set /p sub = введите sub: [пользователь вводит 255.255.255.0]
эхо% ip% маска подсети% sub%

Должно эхом

192.168.1.1 маска подсети 255.255.255.0

вместо этого это эхо

1 подсеть маска 2

это даже не останавливается, чтобы взять другой вход. Проще говоря, он принимает только первый символ из всего, что введено. Любая помощь?

1 ответ1

2

Это давняя проблема с вводом psexec. Кажется, проблема связана с обработкой каналов, в основном то, что пользователь вводит в строку set/p разбивается на несколько входов и кусочно подается в пакетный файл, что, конечно, не так, как он должен работать.

Наиболее близким к чисто psexec решению является фрагмент кода, опубликованный пользователем qazy на собственном форуме SysInternals PsExec по адресу http://forum.sysinternals.com/psexec-do-not-recog-p_topic5101_post137110.html#137110 (кстати, поток был начат еще в 2006 году, а ответ qazy пришел в 2012 году). Код в основном предвосхищает неправильный ввод и пытается собрать части в одну строку. В основном это работает, хотя по моему опыту иногда требуется дополнительная клавиша ENTER для завершения ввода строки.

Альтернатива, которую я нашел совсем недавно, - это paexec с https://www.poweradmin.com/paexec/ (обязательный отказ от ответственности: у меня нет никакого отношения / интереса к / в poweradmin , но мне нравится тот факт, что их paexec открытым исходным кодом, и я использовал это для реальных дел по дому).

Как это и происходит, paexec похоже, правильно использует этот входной канал . Пакетный файл testsetp.cmd

@echo off

set /p "ip=Enter the ip: "
set /p "sub=Enter the sub: "

echo %ip% subnet mask %sub%

выходы

C:\etc>paexec \\otherpc cmd /c D:\temp\testsetp.cmd

PAExec v1.26 - Execute Programs Remotely
Copyright (c) 2012-2013 Power Admin LLC
www.poweradmin.com/PAExec


Connecting to otherpc...
Starting PAExec service on otherpc...

Enter the ip: 192.168.1.1
Enter the sub: 255.255.255.0
192.168.1.1 subnet mask 255.255.255.0
cmd returned 0

PAExec returning exit code 0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .