Как я могу выполнять команды psexec в файле bat

Я пытаюсь написать файл bat, который выполнит следующее:

psexec \\host1 cmd
d: #to change the remote server's drive
cd\
dir /s/b "file1" #searches for this file in host1 in its d: drive

Как я могу это сделать


person PopCorn    schedule 19.06.2017    source источник


Ответы (2)


Если вы используете современную систему Windows, вы можете вызвать команду на удаленном компьютере с помощью PowerShell из своего сценария cmd .bat. Нет необходимости в psexec. Удаленный компьютер необходимо настроить для удаленного взаимодействия PowerShell. Get-Help about_Remote

powershell -NoProfile -Command "invoke-command HOST01 { cmd /C dir /S /B D:\file1 }"

Если вы работаете в PowerShell:

invoke-command HOST01 { cmd /C dir /S /B D:\file1 }

Конечно, в PowerShell вы также можете использовать командлеты PowerShell.

icm HOST01 { gci -n -rec D:\file1 }
    -or-
Invoke-Command HOST01 { Get-ChildItem -Name -Recurse D:\file1 }
person lit    schedule 19.06.2017
comment
Большое спасибо за обмен, как я могу включить эту команду powershell в скрипт perl - person PopCorn; 19.06.2017
comment
Ничего не было сказано о Perl. Пожалуйста, создайте новый вопрос. - person lit; 19.06.2017
comment
я задал вопрос здесь ссылка - person PopCorn; 19.06.2017

psexec \\host1 cmd /c "d: & cd\ & dir /s/b file1"

или просто

psexec \\host1 cmd /c "dir /s/b d:\file1"

Консоль, в которой выполняется cmd, автоматически закрывается, когда команда завершает выполнение, поэтому вы фактически не увидите результат. Вы можете оставить cmd работающим (и консоль вместе с ним), используя /k вместо /c, но это тоже не имеет особого смысла. Похоже, у вас проблема с XY.

person ikegami    schedule 19.06.2017
comment
Кажется, psexec повторно использует текущую консоль, когда удаленная система является IP-адресом, и это единственный случай, когда я могу заставить работать перенаправление на каналы и файлы. - person Eryk Sun; 19.06.2017