Мне нужно запустить команду на нескольких сотнях серверов и найти PsExec из Sysinternals очень полезно. Однако существует небольшая проблема, когда сервер выключен или приложение не установлено. В этом случае ошибка не регистрируется в моем выходном файле.Использование PsExec из-за ошибок пакетной и ловушки
Как я могу «зарегистрировать» выход из PsExec, когда сервер не отвечает? Это должна быть строка с «Автономным» или «Ошибка» в моем выходном файле.
Моя цель состоит в том, чтобы запустить список из 800 серверов и получить файл результатов.txt с ровно 800 строк, чтобы я мог вставить содержимое в excel и сравнить значения.
Мой сценарий выглядит следующим образом:
@echo off
setlocal enabledelayedexpansion
set OUTPUT_FILE=result.txt
>nul copy nul %OUTPUT_FILE%
for /f %%i in (servers.txt) do (
for /f "tokens=1,2" %%x in ('psexec.exe \\%%i -u MyDomain\MyUsername -p MyPassword dspmqver -f 2') do (
IF "%ERRORLEVEL%"=="0" (
echo %%i %%y >>%OUTPUT_FILE%
) ELSE (
echo Error
)
)
)
Любая помощь будет оценена.
С наилучшими пожеланиями
Rasmus
Edit:
Выход из PsExec в неисправного ситуации и работает один.
На автономном сервере, где это явно ошибка - выход:
psexec.exe \\hostname -u MyDomain\MyUsername -p MyUsername dspmqver -f 2
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
Couldn't access hostname:
Network path not found (translated from danish)
Make sure that the default admin$ share is enabled on hostname
На интернет-сервере, где скрипт работает - выход.
psexec.exe \\hostname -u MyDomain\MyUsername -p MyUsername dspmqver -f 2
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
Version: 7.5.0.4
dspmqver exited on hostname with error code 0.
Каков результат от прямого вызова psexec за пределами партии? В том числе errorlevel – Marged
Я только что отредактировал исходное сообщение, чтобы добавить результат - не могу использовать стиль кода в комментариях здесь. – RazziaDK