• ベストアンサー

Wimで第2のWindowsのPGを起動し、そのPGから第3のWindowsへ:出来ますか?

『Windowsの共有ドライブ:telnetで使えますか?』と言うタイトルで質問させて頂きました処で、直ぐ回答下さいましたkanop_98さん、有難うございました。 そこから再出発し、標題のご質問いたします。 下記のコマンドファイルがその次の結果を出るのですが、このプログラムをWMIで第2のWindowsで正しい結果を出せる為に、如何すれば良いでしようか?(『Windowsの共有ドライブ:telnetで使えますか』を参照) 宜しくお願いします。 ========================== プログラム(と言えないかも): 1 @echo off 2 echo %ComputerName% %date% %time% 3 net time \\10.64.230.85 4 net config server 5 net config work 6 dir \\10.64.230.85\f$\contest?.jpg 予想の結果(実際に失敗の結果は前タイトル参照): SAM-PLAYER 土 2003/08/16 1:45:45.26 \\10.64.230.85 の現在の時刻は 2003/08/16 1:57 です コマンドは正常に終了しました。 サーバー名 \\SAM-PLAYER サーバー コメント ソフトウェア バージョン Windows 2000 アクティブなネットワーク (サーバー) NetBT_Tcpip(略) 隠しサーバー No 最大ユーザー数 無制限 各セッションのオープン ファイルの最大数 16384 (中略) バイトの空き領域

質問者が選んだベストアンサー

  • ベストアンサー
noname#41381
noname#41381
回答No.7

できました! これに関するMSのKBを見つけました。 http://support.microsoft.com/default.aspx?scid=KB;JA;214726 こんなのわかってるよ...と思ったのですが、よく見るとnet useのアカウント指定にドメイン名が入ってます。 つまり  net use \\10.64.230.85\f$ /user:administrator password 仮に先のサーバをServer-C(ワークグループ)とする  net use \\10.64.230.85\f$ /user:Server-C\administrator password になるということですね。

参考URL:
http://support.microsoft.com/default.aspx?scid=KB;JA;214726
cwl
質問者

お礼

おめでとう! さすがに情報収集力凄いですね。 自分もtelnet(NTLM)で確認して、その通りですね。 WMIの方の実験はこれからじっくり検証しますので、後でご報告します。恐らく問題なく出来ると思います。 『Windows NT には、ネットワーク ログインでのセキュリティの委任 (パススルー) を実行する方法はありません。』の意味は、net use を事前に立てずにイキナリdirやcopyなど実行できない、と言う事でしょうか。 それから、net config workがエラーになるのは、やはりNTLM無しの認証方法と違うので、引っ掛かるですね。 取り急ぎ、お礼を申し上げます。

cwl
質問者

補足

ご回答、有難うございました。 今日、自分がもともと計画したWMI起動スクリプトを実験したら、期待どおりの結果が出ました。 これでクローズします。 これからも宜しくお願いします。

その他の回答 (6)

noname#41381
noname#41381
回答No.6

#5補足より >自分の所で簡単なサンプルで実験して見ました。 >そちらでのエラー等の詳細を教えて頂けますか。 >  Failed to connect to 10.71.30.90: -2147418111 と出ます。 確かに元々DCOMは無効にしていたのですが、今回のテスト時に有効にしています。 もしかしてサーバの再起動が必要なんでしょうかね? 他にもセキュリティ的な設定をいろいろやっているのでちょっと怪しいです。 ということでこのサーバをあきらめ、自PCのVMWare上のサーバでテストしたところ正常に行きました...が やはり言われているような「エラー 1312 」が発生しますね。 どうもローカルシステムアカウントで実行しているのが原因のようです。 結局何も解決していませんので、引き続き調べてみます。 とこれだけではあれなので、回避策(といえるかどうか)をひとつ。 まず、Bで実行するバッチをatコマンドによるスケジュールにしました。 で、atから呼ぶバッチは別に用意する(もしくはバッチの中で生成する) at自体は既定値だとローカルシステムアカウントで実行してしまうので、 タスクの詳細設定の中の「ATサービスのアカウント」でユーザ指定しました。 確かにセキュリティに問題は残るでしょうが、一応これでCに接続できました。 元バッチの中の時間指定は、B上で時刻同期をされているようなので、 例えば以下のようなバッチで指定できますね。(時刻取得の2分後にatをセット)  for /f "tokens=1 delims=: " %%i in ('echo %time%') do set hh=%%i  for /f "tokens=2 delims=: " %%j in ('echo %time%') do set mm=%%j  set /a setmm=%mm%+2  at %hh%:%setmm% /interactive c:\xxxx.bat ※set /aが有効な場合のみ

cwl
質問者

補足

どうも、有難うございました。 >とこれだけではあれなので、回避策(といえるかどうか)をひとつ。 >まず、Bで実行するバッチをatコマンドによるスケジュールにしました。 >で、atから呼ぶバッチは別に用意する(もしくはバッチの中で生成する) >at自体は既定値だとローカルシステムアカウントで実行してしまうので、 >タスクの詳細設定の中の「ATサービスのアカウント」でユーザ指定しました。 >確かにセキュリティに問題は残るでしょうが、一応これでCに接続できました。 鋭いですね。この方法は確かに出来る事は、前から知っていました。 実を言うと、A,B,Cの3機で(もう私のややこしい状況は分っていますね。笑)、出発点のA機では、自動運用の為にスケジューリング・サービスを利用して、最初は出来なくて、後は正にこのような方法で解決しました。 ですが中間地点のB機はあくもでもAより遠隔電源オンしてから、一寸作業して、またシャットダウンする一般のWindowsワークステーションなので、ATを立てる等の細工をしたくないです。(第3機の共有ドライブを使いたいだけですが…) kanop_98さんの粘り強い研究に本当に感謝、感心しています。解決が見つかる可能性がありますね。 『こんなの、簡単だ』とおっしゃる方居ましたら、是非、宜しくお願いします。

noname#41381
noname#41381
回答No.5

#3補足より >問題はBからCにアクセスする時、如何認証を済ませることです。 > で、#4補足より >自機と他機両方同じ管理者ID、同じパスワードで、実現しています。 > たぶん、B上で実行されるバッチは、Bへの接続した認証ユーザで実行されるので、 そのバッチの中で呼ばれるCへの認証もBのユーザで行われるような気がするのですが...。 試してみてダメでしたか? 自分はDCOM接続時点でダメなようでしたが...(ToT)後述します それか、明示的に接続してしまうとか。 質問内でだされているバッチを例にとると  @echo off  echo %ComputerName% %date% %time%  net time \\10.64.230.85  net config server  net config work  net use \\10.64.230.85\f$ /user:administrator password ....※  dir \\10.64.230.85\f$\contest?.jpg ※の部分を追加です。 ただ、この問題とは別に相手サーバの台数が複数あると、 例のWMIのままだとそのたびにバッチを書き換える必要がでてきますね。 そこら辺のロジックは簡単に作れそうですが、WMIのわからない自分ではアドバイスできません。すみません...。 >もし時間が有ればエラー等の情報を教えて頂ければ、見てみましょうか。 > おぉぉ心強い!! エラーとなっているのは61行目からの処理です。 |set osvcRemote = GetObject("winmgmts:\\" & ip & "\root\cimv2") |if (Err.Number <> 0) then | wscript.echo "Failed to connect to " & ip & "." | このエラー条件にひっかかって、  "Failed to connect to 相手サーバ(B)." となってしまいます。 相手サーバ(B)のイベントログをみると、ユーザ認証は正常に行われているようなのですが...。 いつの間にやら自分が質問者に?^ ^;;

cwl
質問者

補足

ご回答、有難うございました。 1、アドバスについて >net use \\10.64.230.85\f$ /user:administrator password ....※ >dir \\10.64.230.85\f$\contest?.jpg >※の部分を追加です。 C:\>net use * \\10.64.221.87\C$ /user:Administrator passwd システム エラー 1312 が発生しました。 指定されたログオン セッションは存在しません。そのセッションは既に終了している可能性があります。 有効なパスワードにも関わらず、こんなエラーが出ます。 これは前から変わらない現象です。10.64.221.87は第3機です。 2、ご質問について 自分の所で簡単なサンプルで実験して見ました。 そちらでのエラー等の詳細を教えて頂けますか。 DCOMは停止してませんか。 宜しくお願いします。 ◎ 成功例 d:\awork>a.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. OK to connect to 10.64.221.85: ISWbemServices × 失敗例 d:\awork>a.vbs 10.64.221.213 Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. Failed to connect to 10.64.221.213: 70 書き込みできません。 スクリプトの中身: d:\awork>type a.vbs On Error Resume Next if WScript.Arguments.Count > 0 then ip = WScript.Arguments(0) else ip = "10.64.221.85" ' Here comes target ip address, if no arv given end if set osvcRemote = GetObject("winmgmts:\\" & ip & "\root\cimv2") if (Err.Number <> 0) then wscript.echo "Failed to connect to " & ip & ": " & Err.Number, Err.Description WScript.Quit end if wscript.echo "OK to connect to " & ip & ": " & TypeName(osvcRemote)

noname#41381
noname#41381
回答No.4

#3補足ですが、 相手サーバへの接続はあらかじめドメイン認証が行われている必要がありそうですね。 単なるワークグループのサーバでadministrator権限であらかじめ認証しておいてもダメなのかなぁ... 自分のところだとなんかうまくいかないです(ToT)

cwl
質問者

補足

Windows2003の経験はありませんが、Windows2000に限って言うとワークグループでも問題ないです(MSの説明ではドメイン云々有るが)。自分の場合、ワークグループ環境で、自機と他機両方同じ管理者ID、同じパスワードで、実現しています。 もし時間が有ればエラー等の情報を教えて頂ければ、見てみましょうか。 宜しくお願いします。

noname#41381
noname#41381
回答No.3

ひさしぶりです。#2です。 もう解決したでしょうか? MS03-026のパッチをwmiでリモートからインストールするVBスクリプトがMSから公開されています。 http://support.microsoft.com/default.aspx?scid=kb;ja;827227 このパッチモジュール(MS03-026_xxx.exe)部分をcwlさんの記載されているバッチファイルに置き換えて試してみてはいかがでしょうか。 (バッチの内容は全てリダイレクトでファイルに落とすようにして)

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;827227
cwl
質問者

お礼

今晩は。いろいろ調べて頂いて有難うございました。 このサンプルはまさにWMIの使用に関する本家MSの標本です。そこに行っていることは私には良く分ります。自分もこのような作業をしますから。 しかし、残念ながら、自分の課題には解決なりません。 このサンプルは2台の間(多数と言ってもA対B1、A対B2、A対B3...と言う具合)のことで、自分が行いたい事は3者間、即ちAからB、そしてBからC、なのです。問題はBからCにアクセスする時、如何認証を済ませることです。 大変感謝しております。

noname#41381
noname#41381
回答No.2

あまり力にはなれないと思いますが、名前が何度か出させていただいてますので、 出来る範囲でアドバイスさせていただきます^ ^;; さて、自分はtelnet環境でのみのテストしかしていませんが、 確かにNTLM認証あり・なし では動作が異なりますね。 結局どちらを試してもダメだった... ということでいいですか? 実運用ではtelnetを使わないと思うので参考にはならないと思いますが一応試した結果を... NTLM認証あり の場合は、net config workstationは言われた通りのエラーになってしまいますが、 NTLM認証なし でadministratorでログオンした場合は、全てエラーなしでいけました。 net config workstatin は自分のセッション情報を見るのでNTLM認証で接続した場合、 セッション管理の制限でエラーになっているように感じられました。 ということで、NTLM認証なしでは全てOKとなったということは、  6 dir \\10.64.230.85\f$\contest?.jpg この処理でエラーとなっているのは、単に開いてサーバの管理共有「f$」やそのルートフォルダに対する アクセス権の問題かと思うのですが、どうでしょうか? もしかしてtelnetは関係なく、それ以前にWMI側で問題になっていたり? WMIでの運用については専門家からアドバイスがつくとは思いますが、 自分でもちょっと調べてみますね。

cwl
質問者

お礼

説明するのに疲れる(笑)程複雑な状況にご回答頂きまして、本当に有難うございました。 >結局どちらを試してもダメだった... ということでいいですか? いいえ、telnelに限っては、サーバの方でNTLN無しにすれば、問題なく第3機の共有をアクセス出来ます。これは教えて頂いた通りです。 >net config workstatin は自分のセッション情報を見るのでNTLM認証で接続した場合、 >セッション管理の制限でエラーになっているように感じられました。 そういう理屈になりますね。唯、似た様なんですけど、こういう言い方も出来ると思いますね。詰まり、『NTLM有りの場合、Windowsユーザとしてログインを済ませっていないから駄目だけど、NTLM無しの場合、(telnetで接続の時ユーザID、パスワードを入力の手順で)キッチンと認証できたから、(資格の有る)セッションとして第3機の共有をアクセスできる』、とも言えるのでしょうか。 telnetの場合でも、私が求めているWmiによる起動されるプロセスの場合でも、何れにしてもWindowsユーザでの認証を踏む必要有ることは明らかになった訳ですが、問題はWmiによる起動されるプロセスの場合は、この認証を済ませる方法が、自分には分りません。詳しい方にお願いしたいと思います。

  • ojin
  • ベストアンサー率43% (280/638)
回答No.1

何を求めているのかを一生懸命理解しようと努力しました。 No.627827と、その「回答に対するお礼」を合わせて理解に心がけた結果なんとなく分かっていきました。 Win2K:Aから、Win2K:Bまたは、Win2K:CにTelnetで接続して、いずれかのスクリプトファイルを起動して、Win2K:B、C間でファイルの転送をしたいということ理解できました。 前提:Domainではなく、Workgroup Win2K:A - Professional Win2K:B - Professional Win2K:C - Server X 1 (Win2K Serverにも、いくつかの種類がありますが、とりあえず、通常のServerとしました) をローカルのネットワーク内で接続。 Aから、B、CにTelnet接続が可能であることを確認 そのままでは、接続できないので、 Aは、Telnetクライアントなので、特に問題はない 1.Win2K Serverは、スタート→管理ツール→サービスの中の、Telnetサービスを起動する。これで、B、Cは、Telnetサーバーとしての機能が開始される。 Win2K Professionalは、スタート→設定→管理ツール→サービス(Win2K Serverも同じ) 2、Aで、コマンドプロンプトを2画面開く。それぞれから、Telnetで、B、Cに接続する。 もし、共有ファイルや、フォルダーがすでに設定されていれば、コマンドプロンプトから、CDで共有フォルダーに移動が可能であるので、通常どおりに、ファイルのコピーをリモートから行えばよいのではないでしょうか。 もし、共有フォルダーが設定されていない場合は、NetBIOS over TCP/IPで、 X:Prompt>net use \\コンピュータ名 X:Prompt>net config server (あるいは、workgroup) X:Prompt>net share \\コンピュータ名\ホルダー名 これでも、同様になる。 もちろん、スクリプトをバッチファイルにしておけば、一発で処理可能。 1 @echo off 2 echo %ComputerName% %date% %time% 単に、コンピュータ名と日にちと時間の取得なので問題はない。 3 net time \\10.64.230.85 ←IPアドレスの代わりにエイリアス(ニックネームをつけてもよい) 4 net config server 5 net config work なぜ、ServerとWorkgroupを同一のサーバーに付ける? 6 dir \\10.64.230.85\f$\contest?.jpg ディレクトリィの参照なので問題はないが、表示されるだけで、作業はできないので、CDで、共有ディレクトリィに移動すればよいと思う。 Telnetサーバに接続したときは、 *=============================================================== Welcome to Microsoft Telnet Server. *=============================================================== C:\> とならないとおかしい。 あとは、ネットワークコマンドをよく理解すれば、希望のことができると思いますし、Telnetだけでも、ファイルのコピーは、問題なくできると思います。

cwl
質問者

補足

ojinさん、ご回答、有難うございました。長文で、大変でしたね。 (一つ、お詫びと訂正:タイトルに有るWimはWmiの間違いです) telnetでの操作は目的では有りません。telnetで第3のWindowsの共有ファイルを使おうとしたら問題が発生して、それは私の状況での問題と共通点があるかなぁ、と思いまして、最初にtelnetの質問(No.627827)を出しました。その質問は、kanop_98さんが見事に解決しました。 では、目的をもう一度明確しましょう。お互いに近い(ネットワークでの意味、即ち回線速度の速い)Windows機B,C間で、ファイルをコピー(FTPなどを使わず、Windowsの共有ドライブ限定)する事を、遠い(同、回線遅い)Windows機Aで遠隔制御する。且つ、自動化するので、telnetは使わない。(下手な図で、恐縮) A----(制御)->---B==(B,C間ファイルコピー)==C           |                      ---------------------| 制御に関しては全部問題なく出来ますが、Aからの制御により、Bで起動されているプログラムに共有ドライブ使えないのは問題です。 net config workコマンドのエラーはそれと関連性有ると思われるので入れただけです。copyコマンドは当然使いますが、例では只dirもエラーですよ、との意味です。後はWelcome云々も出力を省略しただけです。 私の文章も凄く下手だと思いますが、掲示板の文字数制限も辛かったので、『一生懸命』程まで読ませてしまいました事は大変申し訳ない気持ちの上、 本当に感謝しております。

関連するQ&A