2016年10月13日木曜日

PsExecでリモートPCのドライブ空き容量を確認する

PsExecというものを使うとリモートPC上でコマンドを実行することができます。
それを利用してリモートPCに接続されているドライブの空き容量を確認するスクリプトを作成しました。
共有設定しているフォルダが保管されているドライブの空き容量が知りたい時に利用します。




まずはPsExecをダウンロードして、ダウンロードしたファイルの中に含まれている「PsExec.exe」をHTAファイルと同じフォルダに保存します。



HTAファイルを起動すると以下の画面が表示されます。



PC名は自動検出ではなくプログラムファイル内に記載していますので、扱いたいPCの名前に適宜変更してください。



「ドライブリスト取得」ボタンを押すと、PsExecの処理が完了するまで少し待機した後



選択したPCに接続されているドライブのリストが読み込まれます。



「容量確認」ボタンを押すと、PsExecの処理が完了するまで少し待機した後



選択したドライブの容量に関する情報が表示されます。

※上図で「277002076160」となっている箇所はfsutilコマンドの出力内容をそのまま表示していますが、桁数が多すぎて分かりにくいので、右の列に適切な単位で表示するようにしています。


ソースは以下


PsExecはリモートPCと接続する時に時間がかかります。(認証の問題?)
今回のプログラムでは「ドライブリストの取得」と「容量確認」の2つの処理をPsExecに頼っていますが、機能を利用するたびに再接続しているので待ち時間がわりとあります。
PsExecそのものは一旦接続したら切断するまでは対話的にコマンドを実行させる機能を持っているのですが、標準入出力を利用してHTAから実行する場合は1回ごとに再接続するしか今のところ方法がありません。。


※PsExecを利用するには、リモート接続先PCに対して管理者権限が必要です。
PsExecを起動するPCにログインしているユーザーがリモート接続先PCに対して管理者権限を持っていれば「psexec.exe リモートPC名 実行させたいコマンド」で実行できます。
権限がない場合は「psexec.exe リモートPC名 -u ユーザID -p パスワード 実行させたいコマンド」とする必要があります。管理者権限があるユーザIDでもパスワードが無いアカウントはPsExecでは利用できません。

1 件のコメント:

  1. PsExecを使わなくてもdirコマンドでサクっと空き容量を調べられるらしいです。。
    http://www.atmarkit.co.jp/ait/articles/0408/14/news017.html

    返信削除