Когда я запускаю PsExec на удаленном компьютере, мне всегда не хватает того, что я хочу. В большинстве случаев я бы хотел, чтобы в идеале а) журнал на сервере администратора, где каждый отдельный журнал имел имя каждого удаленного компьютера, с которого он был создан (например, COMPNAME1.log, COMPNAME2.log и т. Д.), Или б) а) log на каждом удаленном компьютере с любым указанным мной именем.
Когда я пробую сценарий (а), я использую следующую команду.
%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username cmd /c echo TEST >> \\server.company.tld\share\%computername%.log
Проблема в том, что это никогда не работает. Все компьютеры просто пишут в лог, где %computername%
это просто компьютер, с которого я запускаю PsExec в своем офисе. Мне нужны уникальные журналы для каждого компьютера, указанного в listofcomputers.txt, которые без проблем будут правильно использовать имя хоста из переменной удаленной среды. Это вообще возможно? Похоже, у меня это не работает. Я пробовал это, и синтаксис явно неправильный.
%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username "cmd /c echo TEST >> \\server.company.tld\share\%computername%.log"
PsExec просто не может сказать, что системный файл не может быть найден (читай: сбой синтаксиса).
Что касается сценария (б), то он представляет собой разновидность аналогичной задачи. Когда я запускаю такую команду, она не работает.
%SystemDrive%\path\to\psexec.exe @listofcomputers.txt -u DOMAIN\username "cmd /c echo %computername% >> \\server.company.tld\share\aggregated.log"
Есть ли что-то, чего я не понимаю об удаленном пути и переменных среды с помощью PsExec на консоли cmd.exe (я еще даже не пробовал ужасную PowerShell). Я знаю, что такие вещи работают в пакетном файле (cmd /c \\server.company.tld\share\runthis.bat
), но есть ли причина, по которой он не будет работать при выполнении команд в качестве аргументов? Мне это всегда нужно, и никогда не получу!
Джентльмены, наконец-то я заработал:
psexec \\ сервер cmd.exe / c echo %% computername %%
(обратите внимание на двойные знаки процента)
Вам нужно выйти с помощью знака вставки ^, иначе cmd попытается решить переменную. например, чтобы получить имя удаленного компьютера
psexec \\pc cmd.exe /c echo ^%computername^%
Power Admin's PAExec (Замена PsExec) имеет дополнительные параметры команды для регистрации того, что он делает. Может это то, что тебе нужно?
Я понимаю, что это было давно, но похоже, что ни у кого не было правильного ответа: используйте отложенное расширение переменной.
psexec @listofcomputers.txt -u DOMAIN\username cmd /v /c "echo TEST >> \\server.company.tld\share\!computername!.log"
Создайте .cmd (или что-то еще), которое делает то, что вам нужно, а затем -cперейдите к списку машин, использующих psexec для выполнения.
Я знаю, что это было еще дольше. Я использую вариант ниже как командный файл с именем id.bat
@psexec \\%1 cmd.exe /c echo %%computername%% 2>nul
использование
C:\utils>id 192.168.10.23
TEXT_LAPTOP7
C:\utils>_
psexec \ computer cmd.exe / c Echo% computername%
буду делать то, что ты хочешь
PS PSEXEC молодцы! Люди, которые думают, что пакетный скрипт мертв, не знают, как его использовать