2013-05-21 86 views
1

我试图运行一个批处理文件,将连接到我的网络上的ip列表,打开cmd然后运行命令列表:像ipconfig /所有,nbstat-c,arp -a 。然后它必须将结果保存到重命名为“computername”的文件夹中。批处理文件创建pse

我已经有一个批处理文件,可以做我想要的命令,并与计算机创建一个文件夹,然后将不同的命令输入到该文件夹​​中的txt文件。

这里是WindowsCommands批处理文件:

md %computername% 

echo off 

echo ARP Command 
arp -a >> %cd%\%computername%\arp-a.txt 

echo NBSTAT Command 
nbtstat -c >> %cd%\%computername%\nbstat.txt 

echo Ipconfig Command 
ipconfig /all >> %cd%\%computername%\ipconfig-all.txt 

echo Ipconfig DNS Command 
ipconfig /displaydns >> %cd%\%computername%\ipconfig-displaydns.txt 

echo Netstat Command 
netstat -ano >> %cd%\%computername%\netstat-ano.txt 

echo Tasklist Command 
tasklist /v >> %cd%\%computername%\tasklist.txt 

echo LG Admin Command 
net localgroup administrators >> %cd%\%computername%\netlocalgroupadmin.txt 

echo Directory Command 
dir C:\Windows\Prefetch >> %cd%\%computername%\prefetch.txt 

exit 

我还创建了一个包含我的本地IP地址,我想上运行命令的HOSTS.TXT文件。

我还创建了另一个用于运行For循环的批处理文件名psexec。

现在我的麻烦和尝试运行psexec批处理文件时出现。

这里是我的PSEXEC文件:

for /f %%a in (hosts.txt) do (
psexec \\%%a C:\Users\ISSG\Documents\WindowsCommands.bat 
) 

现在只是一个草稿,我不能完全肯定,如果这是应该如何进行编码。这是我写过的第一个自动脚本之一。

所以简而言之,我需要能够从我的本地计算机psexec运行此批处理文件到IP中。收集信息并将其输出到本地计算机上的txt文件中。

如果任何人都可以指出我会朝着正确的方向发展,那就太棒了! 谢谢!

+0

你需要'C:\用户\ ISSG \文件\ WindowsCommands.bat'你的远程主机。更好地共享文件并像这样调用它:'psexec \\ %% a%localshare%\ WindowsCommands.bat' – npocmaka

+0

请不要破坏您自己的问题。当你这样做时,答案变得毫无价值。如果您觉得您的用户名是敏感信息,请修改或标记该问题并请求将其删除。 – Gordon

回答

1

如果您的批处理文件不存在于所有计算机上的系统目录中,则必须使用-c开关将其复制到它们以便运行它。首先尝试ping电脑以节省尝试连接电脑的时间是个好主意。

for /f %%a in (hosts.txt) do (
    for /f "tokens=2 delims=:" %%b in ('ping -n 1 %%a ^| find "TTL="') do (
    if errorlevel 0 (
     psexec \\%%a -c -f -u username -p password C:\Users\ISSG\Documents\WindowsCommands.bat 
    ) 
) 
) 

此外,请记住,这将在远程计算机上的System32目录中创建文件夹。如果你想在您的本地驱动器上,做这样的事情:

@echo off 

FOR /F "tokens=2" %%A IN (
    'net use * "\\computer\share"' 
) DO IF NOT %%A.==command. SET dl=%%A 

if not exist "%dl%\%computername%" md "%dl%\%computername%" 

echo ARP Command 
arp -a >> %dl%\%computername%\arp-a.txt 

echo NBSTAT Command 
nbtstat -c >> %dl%\%computername%\nbstat.txt 

echo Ipconfig Command 
ipconfig /all >> %dl%\%computername%\ipconfig-all.txt 

echo Ipconfig DNS Command 
ipconfig /displaydns >> %dl%\%computername%\ipconfig-displaydns.txt 

echo Netstat Command 
netstat -ano >> %dl%\%computername%\netstat-ano.txt 

echo Tasklist Command 
tasklist /v >> %dl%\%computername%\tasklist.txt 

echo LG Admin Command 
net localgroup administrators >> %dl%\%computername%\netlocalgroupadmin.txt 

echo Directory Command 
dir C:\Windows\Prefetch >> %dl%\%computername%\prefetch.txt 

Net use %dl% /delete 
+0

有几个选项。 1.将psexec复制到\ windows \ system32目录。 2.将psexec的路径添加到Path环境变量(手动或使用setx)3.在您的脚本中创建一个变量,并使用指向psexec的路径并用它来代替PsExec.exe。 4.将cd/d%〜dp0添加到psexec脚本的顶部,并将psexec复制到您从中运行脚本的位置。如果需要,您可以将其删除。 –

+0

是的,我刚刚进入它。批处理文件尝试第二个IP时。该窗口不会保持足够长的时间以查看它显示的内容。我试图在WindowsCommands.bat的末尾放入一个PAUSE命令,但它只停留在第一个ip上。 – badbiddy

+0

我知道它显示我收到的错误。 “将C:\ Users \ ISSG \ Documents \ WindowsCommands.bat复制到远程系统时出错:文件存在”不确定是否表明它已经存在并且不会运行批处理。 – badbiddy