2013-05-21 84 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