0

したがって、基本的には、テキスト ファイル「server.txt」に名前が記載されている 100 台のサーバーで「sc」コマンドを実行するだけです。次のことを試しましたが、空のメモ帳ファイルが返されるため機能しません。

for /f %%a in (servers.txt) do sc \\server_name query | find "SERVICE_NAME">>servicecontroller.txt

上記のコマンドをローカルで試したところ、問題なく動作しました。問題が「\server_name」にあることはわかっています。何が間違っているのかわからない。非表示の共有を使用する必要がありますか? こんな感じかな?

\\server_name\c$ /user:domain\username password    

それともこんな感じ?

 \\server_name\c$
4

3 に答える 3

2

PsExecを使用して、ネットワーク内のリモート マシンでコマンドを実行できます。これを使用して、バッチ ファイルを実行し、パラメータを渡したり、実行中のサービスをチェックしたりします。テキスト ファイルにリストされている多数のコンピューターで実行する特別な構文もあります。

または、powershell がオプションの場合は、powershell リモート処理の使用を検討できます。

于 2012-09-14T18:46:02.577 に答える
1

別の方法として、そのためにwmicを使用できます。

一度に多くのマシンに対して実行し、リストを適切にフォーマットされたhtmlテーブルとして保存します(他のフォーマットの中でも):

wmic /node:@servers.txt /output:services.html service get caption /format:htable 

もちろん、名前/キャプション以外にも、さらに多くの属性を照会できます。

于 2012-09-14T20:22:38.370 に答える
1

\\server_nameではなくハードコーディングした場合は%%a、それが問題です。代わりにこれを試してください:

for /f %%a in (servers.txt) do sc \\%a query | find "SERVICE_NAME">>servicescontroller.txt

編集:次の行は、すべてのサーバーで一貫して管理者アクセスを取得するのに役立ちます。これはI(OP)が探していたラインです。

net use \\servername\ipc$ /u:domain\user password
于 2012-09-14T20:06:10.497 に答える