2017-04-05 4 views
0

憂鬱、バッチ:psexec(送信コマンドチェーン)内の "出力の文字列"

私は私の小さなプロジェクトで私を助けることを望んでいます。 しばらくの間、仕事量は少なくても効率は同じレベルの仕事を処理するツールを作っていました。ここで

は、私はとのトラブルを抱えている部分である:

@echo off 
title Hardware Check 
color f 
echo """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
echo " _ _    _       ____ _    _ " 
echo "| | | | __ _ _ __ __| __  ____ _ _ __ ___/___| |__ ___ ___| | __" 
echo "| |_| |/ _` | '__/ _` \ \ /\// _` | '__/ _ | | | '_ \/_ \/ __| |/ /" 
echo "| _ | (_| | | | (_| |\ V V | (_| | | | __| |___| | | | __| (__| < " 
echo "|_| |_|\__,_|_| \__,_| \_/\_/ \__,_|_| \___|\____|_| |_|\___|\___|_|\_\" 
echo """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
echo "                   " 
echo """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" 
echo. 
echo "Which server do you want to check?" 
echo. 
set /p ans="Machine: " 
echo. 
psexec \\%ans% cmd /c (^ omreport system^ ^& echo.^ ^& omreport chassis^ ^& echo.^ ^& omreport storage pdisk controller=0^ ^& echo.^ ^& uptime^ ^& echo.^ ^& pause^ ^& echo.^) 
echo. | findstr /I /B /C:"status" | findstr /I /C:"critical" 
if %errorlevel%==0 (color c) else (color a) 
echo. 
pause 

アイデアは、出力データは、単語、「クリティカル」そうであれば、色、赤色用のすべてのテキストが含まれている場合は、コマンドを送信した後、バッチがチェックすべきことです、それ以外の場合は緑の色になります。それが見つけ、原因赤い状態色にすべきテキストの

例:私はこれを実行すると、条件が満たされているかどうかバッチが本当に気にしないように

Status       : Non-Critical 

、それは緑のために、それは常に色、と思われます。 どこに間違いがあり、どのように修正して動作させるのかが分かっていれば、感謝しています。

+0

'psexec \\%ans%cmd/c ^(omreport ...'( '^('しかし ''(^ ')には注意してくださいね...ところで、引用符'cmd/C'の後にコマンドの前後に何かエスケープする必要はありません... – aschipfl

+0

()の代わりに、この小さな部分のコードは真ですが、それはコードのほんの一部であり、サービスとプロセス 私が動作しない部分は、テキストの色付きのものだと言っていたので:( – mgj1993

答えて

0

出力のではなく、echo.の出力で「ステータス」と「クリティカル」を探しています。 echo.は行末よりも何も出力しないので、バッチファイルは "status"と "critical"という単語を決して見つけられず、色は常に緑色になります。もっと簡単に言えば、コード:

echo. | findstr /I /B /C:"status" | findstr /I /C:"critical" 
if %errorlevel%==0 (color c) else (color a) 

color aと厳密に等価です。

リモートシステムのファイルにリモートコマンドの出力をキャプチャし、そのファイルをローカルシステムにコピーし、findstrを使用してコピーしたファイルを調べる必要があるかもしれません。

+0

これまでのところ、あなたはそれをあなたが見せた方法で解決する方法を考えるのに時間を費やしました psexecの後に何かを追加した後、psexec – mgj1993

+0

@ mgj1993:私はあなたが 'cmd'に渡されたコマンドを正確には読まなかったと告白しています。その理由は色が常に緑色であるからです。あなたは 'color a'と言っても非常に複雑な方法を使っています。具体的な使用例については、リモートシステム上のファイルにリモートコマンドの出力を取り込み、そのファイルをローカルシステムにコピーし、 'findstr'を使用してコピーしたファイルを調べる必要があります。 – AlexP

+0

私はできればと思います。もう一つの制限は私がどんなマシンにもファイルを置くことができないことです:( – mgj1993

関連する問題