2012-04-27 21 views
0

Powershellでこれを行うことができますが、私はコマンドプロンプトのスキルを練習するプロジェクトとして、バッチファイルでやりたいと思っています。私はComputerNamesとtxtファイルを持っている、私はループを名前をエコーし​​、SystemInfoを実行し、結果から特定の行を取得します。バッチforループ、たぶん私は何かが足りないよ

Computers.txtのは次のように読み取ります

XPCOMPUTER1 
XPCOMPUTER2 
W7COMPUTER1 
W7COMPUTER2 

私のバッチファイルは次のようになります、それに続い、PSEXECをホスト名を一覧表示し、システム情報やグラブを実行する必要があり、

For /F %%w IN (computer.txt) Do (echo %%w & psexec \\%%w cmd.exe & 
systeminfo | Find "Total Physical Memory:") 

Total Physical Memory、右か?私はそうだと思いました!しかし、私は得る

%%W was unexpected at this time. 

どのような考え?

答えて

2

私はあなたがこのようpsexecから起動cmdにパラメータとしてsysteminfoを渡す必要があると思う:

For /F %%w IN (computer.txt) Do (echo %%w & psexec \\%%w cmd.exe /c systeminfo | Find "Total Physical Memory:") 

そうでなければ、あなただけのsysteminfocmdから実行されていない、systeminfoその後、cmdを実行します。

また、タイプミスでない限り、スクリプトにcomputer.txtと書いてあり、computers.txtと言いました。

問題が解決するかどうかはわかりませんが、それは価値があります。

0

私がこれを解決するための最良の方法は、psexecを使って直接systeminfoを呼び出すことでした。私に戻っています

For /F %%w IN (computer.txt) Do (echo %%w & psexec \\%%w systeminfo | Find "Total Physical Memory:") 

:私は今、PowerShellを学んできたので、私は完全に違ったけれども、この問題を攻撃する

Total Physical Memory:  8,126 MB 

Name  RAM(MB) 
----  ------- 
AL-1NG43Q1 8126 
LOCALHOST  8126 
127.0.0.1  8126 
:その結果

ForEach ($computer in (Get-Content Computer.txt) { 
    Get-CIMInstance -ComputerName $Computer -Class Win32_ComputerSystem | `  
Select Name,@{N='RAM(MB)';E={[int]($_.TotalPhysicalMemory /1mb)}} 

関連する問題