locked
Windows2008R2でExcelVBAからrsh起動時に「内部コマンドまたは外部コマンド・・として認識されていません」でエラーになる RRS feed

  • 質問

  • Windows2008R2にSUAをインストールしてrshコマンドが使用できる環境を作成しました。コマンドプロンプト(管理者)にてrshを実行した場合は正常に動作しますが、Excel VBAからrshを含んだバッチファイルを起動すると「'rsh'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。」とメッセージが出力されrshが実行されません。

    ・バッチファイルの記載は以下です。

    rsh IPアドレス -l ログイン名 "ls”

    ・上記rshをコマンドプロンプトで実行すると問題なく実行されます。

    ・バッチファイルの記載をrshからecho %path%等のコマンドに変更した場合は、問題なくechoが実行されます。

    ・Excel VBA,バッチファイルは管理者権限のついたユーザで作成しています。

    本問題に対して対処方法がご存知の方はアドバイスをお願いします。

    2012年11月9日 2:43

回答

  •  自分も気になって、Windows Server 2008 R2にSUAをインストールして調べてみました。
    (普段はCygwin使っていますけど)

     Excelのマクロから動かして動くには動いたのですが、ちょっと気になる事がありました。
    ls コマンドについですが、実際にはSUA\binのlsではなく、SUA\commandのls.exe が動いているようです。
     SUA\binにもSUA\commandにもPATHは通っているため、実行は可能でした。

     対してrshコマンドですが、こちらはSUA\binのrshが動いていて、こちらはPATHが通っていてもフルPATHを
    指定するか、カレントディレクトリをSUA\binにしないとエラーになりました。

     以上の事から、Excelから動かすバッチファイルですが、CDコマンドでカレントディレクトリを
    SUA\binフォルダに移動してからrshコマンドを実行してみてはどうでしょうか?

    なお、SUA\binとSUA\commonに対するアクセス権も考えたのですが、コマンドプロンプトでは
    動いているようなので、問題はないと思います。

    • 回答の候補に設定 星 睦美 2012年11月27日 1:45
    • 回答としてマーク 星 睦美 2012年11月29日 5:15
    2012年11月12日 6:44

すべての返信

  • echoが実行できた理由は、echoは内部コマンドなのでPATHが通ってなくても実行できたからと思われます。

    「echo %PATH%」で表示された内容にrshへのPATHは通っていすか?
    通っていなければ、rshへのフルパスを指定するか、
    start コマンドを使って環境変数を引き継いだ状態でバッチファイルを起動してみてはどうでしょうか。

    2012年11月9日 9:29
  • CatTail 様

    返信ありがとうございます。

    Windows\SUA\binをパスに追加していますが、内部コマンドまたは外部コマンド~認識されていませんが出力されます。バッチファイルでの指定をrshからls,pwd(共にWindows\SUA\bin下のコマンド)に変更したところ、lsは正常に動作しましたが、pwdはrshの時と同じ結果でした。

    また、rshをフルパス(Windows\SUA\bin\rsh)で指定しても、外部コマンド~認識されていませんでrshが起動できませんでした。

    startコマンドでも試してみました。DOSプロンプトからだとバッチファイル(rsh)を実行できましたが、ExceVBAからだとrshが起動できません。

    難解です。

    2012年11月9日 13:47
  • 頭に "¥" がないとフルパスにはなりません。
    "¥Windows¥SUA¥bin" で指定してください。(¥は半角)


    ITAYA (itaya-y@corso-b.net, http://itaya.corso-b.net)

    2012年11月10日 10:38
  • ITAYA様

    返信ありがとうございます。

    以前お知らせしたフルパスの記述が間違っていました。実際は以下です。

    C:\Windows\SUA\bin\rsh IPアドレス -l  ログイン名 コマンド

    環境変数のpathにC:\Windows\SUA\bin\は追加しています。

    rshと同じフォルダにあるlsコマンドの場合は、フルパスを指定しなくても正常に動作します。

    DOSプロンプトでは正常に動作するrshコマンドがExcelVBAから起動した場合に、エラー

    (内部コマンドまたは外部コマンド~認識されていません)になるのかが不思議です。

    セキュリティなど何か関係あるのでしょうか?(ExcelVBA等のプログラムからrshは実行できないようになっているとか・・・)

    2012年11月10日 13:39
  •  自分も気になって、Windows Server 2008 R2にSUAをインストールして調べてみました。
    (普段はCygwin使っていますけど)

     Excelのマクロから動かして動くには動いたのですが、ちょっと気になる事がありました。
    ls コマンドについですが、実際にはSUA\binのlsではなく、SUA\commandのls.exe が動いているようです。
     SUA\binにもSUA\commandにもPATHは通っているため、実行は可能でした。

     対してrshコマンドですが、こちらはSUA\binのrshが動いていて、こちらはPATHが通っていてもフルPATHを
    指定するか、カレントディレクトリをSUA\binにしないとエラーになりました。

     以上の事から、Excelから動かすバッチファイルですが、CDコマンドでカレントディレクトリを
    SUA\binフォルダに移動してからrshコマンドを実行してみてはどうでしょうか?

    なお、SUA\binとSUA\commonに対するアクセス権も考えたのですが、コマンドプロンプトでは
    動いているようなので、問題はないと思います。

    • 回答の候補に設定 星 睦美 2012年11月27日 1:45
    • 回答としてマーク 星 睦美 2012年11月29日 5:15
    2012年11月12日 6:44
  • 質問とは直接関係ありませんが、セキュリティ上、rshを使っても大丈夫なんでしょうか?
    (おそらくイントラネット内で使用するとは思いますけど)

    ちょっと気になったものですから。

    2012年11月13日 10:53
  • フォーラム オペレーターの星 睦美です。

    ITAYA さん、CatTail さん 回答ありがとうございます。

    100syun さん、投稿ありがとうございます。

    今回は同様の情報をお探しの方にも参考になると思いますので
    私からCatTail さんの返信に[回答としてマーク]させていただきました。

    これからも役立つ回答がありましたら、ぜひ投稿者から[回答としてマーク]をお願いします。


    日本マイクロソフト株式会社 フォーラム オペレーター 星 睦美

    2012年11月29日 5:20