我正在使用 psexec 自动运行
获取.bat
任务清单 | findstr pmill.exe >> dc-01\c$\0001.txt
run_get.bat
psexec @%1 -u 管理员 -p 密码 -c "C:\get.bat"
pclist.txt
在我们网络上的所有 PC 上,
如何在文本文件中使用 PC 名称而不是仅 pmill.exe 获得结果?无论如何我可以从powershell做吗?我需要在结果中获得电脑名称。请提示!
我正在使用 psexec 自动运行
获取.bat
任务清单 | findstr pmill.exe >> dc-01\c$\0001.txt
run_get.bat
psexec @%1 -u 管理员 -p 密码 -c "C:\get.bat"
pclist.txt
在我们网络上的所有 PC 上,
如何在文本文件中使用 PC 名称而不是仅 pmill.exe 获得结果?无论如何我可以从powershell做吗?我需要在结果中获得电脑名称。请提示!
而不是 psexec,试试这个:
@echo off
setlocal enabledelayedexpansion
for /f %%I in (pclist.txt) do (
set /p q="Checking %%I... "<NUL
ping -n 1 -w 500 %%I>NUL 2>NUL
if !errorlevel!==1 (
echo Offline.
) else (
wmic /node:%%I /user:adminuser /password:pass process where name="pmill.exe" get csname 2>NUL | find /i "%%I" >>dc-01\c$\0001.txt
echo Done.
)
)
如果 pmill.exe 正在运行,则会输出%computername%
,否则不会输出。
编辑:
如果您必须使用psexec
,那么我建议更改for
调用循环的逻辑psexec
,如下所示:
@echo off
setlocal enabledelayedexpansion
for /f %%I in (pclist.txt) do (
set pc=%%I
set /p q="Checking %%I... "<NUL
ping -n 1 -w 500 %%I>NUL 2>NUL
if !errorlevel!==1 (
echo Offline.
) else (
for /f %%z in ('psexec \\!pc! -u adminuser -p pass tasklist 2^>^&1 ^| findstr /i "pmill.exe"') do (
set /p q="pmill.exe found. "<NUL
echo !pc!>>dc-01\c$\0001.txt
)
echo Done.
)
)