VBS初心者です。
別端末上のbatファイルを別ユーザでリモート実行したいのですが、
以下のソースでエラーが起きてしまいます。(result が2で返ってきてしまう)
どなたか原因がお解りになりましたらご教授宜しくお願い致します。

-----------------------------------------------------
RemoteExecute "リモート先","ドメイン\User","pass","C:\test.bat"

Function RemoteExecute(strServer, strUser, strPassword, CmdLine)
Const Impersonate = 3
RemoteExecute = -1
Set Locator = CreateObject("WbemScripting.SWbemLocator")
Set Service = Locator.ConnectServer(strServer, "root\cimv2", strUser, strPassword)
Service.Security_.ImpersonationLevel = Impersonate
Set Process = Service.Get("Win32_Process")
result = Process.Create(CmdLine, , , ProcessId)
If (result <> 0) Then
WScript.Echo "Creating Remote Process Failed: " & result
Wscript.Quit
End If
RemoteExecute = ProcessId
End Function
-----------------------------------------------------

A 回答 (1件)

コマンドラインの指定で、バッチファイルを直接指定しているのがマズイのでは?



"C:\test.bat"を"cmd.exe /c C:\test.bat"に変えてみては?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QPHP を使い、webminのようにリモートでlinuxをシャットダウンさせたい

こんにちは

webminのように、クライアントのPCからリモートでlinunxサーバーをシャットダウンするには
どういうスクリプトを書けばよいかご存知の方
よろしくお願いします。

Aベストアンサー

そもそも、setuidビットの存在すら知らないのに (cf. chmod(1)
そのようなアプリケーションを開発しようというのが無謀なのでは?
一度ゆっくりunixについて調べてからがいいとおもいますよ
趣味でやるならばですね・・・

仕事でやるなら、裁判沙汰になる前にやりにげ・・・(w
wwwユーザをoperatorグループにしちゃえば・・・(悪
もしくは
shutdownを呼び出すスクリプトを
chown root:www それ
chmod 4550 それ
とかしてそれをphpから呼び出すとか
#そんなことするぐらいならsudoをインストールするというのも手

理解せずにそんなことやってると穴だらけの製品が出来るので
あまりやってほしくありませんが・・・

QVBSからbat実行(WMI)して戻り値を取得する

WSH初心者です。
WSH(remote.vbs)からWMI使用で別サーバのA.batを実行しているのですが、
A.batの戻り値はどのように取得すれば良いのでしょうか?

-■remote.vbs(一部抜粋)------------------------------------------
' #WMI に接続 Wim32_Process クラスを取り出す
Set clsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}" & "!" & リモート先PC & "Win32_Process")
' #プロセスの作成
lngResult = clsProcess.Create(A.bat, null, null, processId)
--------------------------------------------------------------
-■A.bat------------------------------------------
exit /B %RetCode%
-------------------------------------------------

A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。

どなたかご存じでしたらご教授の程よろしくお願い致します。

WSH初心者です。
WSH(remote.vbs)からWMI使用で別サーバのA.batを実行しているのですが、
A.batの戻り値はどのように取得すれば良いのでしょうか?

-■remote.vbs(一部抜粋)------------------------------------------
' #WMI に接続 Wim32_Process クラスを取り出す
Set clsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}" & "!" & リモート先PC & "Win32_Process")
' #プロセスの作成
lngResult = clsProcess.Create(A.bat, null, null, processId)
---------------------------------------...続きを読む

Aベストアンサー

>A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。

取得は出来ません。

A.batの終了値はA.batを起動したシェル(cmd.exe等)には伝わりますが、それより上位(呼び出し元)には伝わりません。

上位に伝わるのは「シェル(cmd.exe等)の終了コード」であり、それは「常に、正常終了を意味する0」です(cmd.exeが「リードエラー。(A)bort,(R)etry,(F)ail?」などの致命的エラーを吐いて強制終了した場合のみ、0以外が返ってきます)

こういう事をしたい場合は

-■A.bat------------------------------------------
echo %RetCode% > result.txt
exit
-------------------------------------------------

など、結果をテキストファイルなどに吐き出させ、呼び出し元に戻ってきてから、吐き出されたテキストファイルをオープンして中身を読み込んで結果を得るしか、方法はありません。

また、呼び出し元で、呼び出したプロセスが終了したかどうか判らない場合もあるので、その場合は、以下のようにします。

1.呼び出し元で、結果ファイルを削除する。
2.リモートでプロセスを起動する。
3.呼び出し元は、結果ファイルが生成されるまで待つ。
4.呼び出されたプロセスは、終了時に結果ファイルを生成する。
5.呼び出し元が結果ファイルの生成を検知したら、中身を読んで結果を取り出す。

>A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。

取得は出来ません。

A.batの終了値はA.batを起動したシェル(cmd.exe等)には伝わりますが、それより上位(呼び出し元)には伝わりません。

上位に伝わるのは「シェル(cmd.exe等)の終了コード」であり、それは「常に、正常終了を意味する0」です(cmd.exeが「リードエラー。(A)bort,(R)etry,(F)ail?」などの致命的エラーを吐いて強制終了した場合のみ、0以外が返ってきます)

こういう事をしたい場合は

-■A.bat--------------------...続きを読む

Qパソコンのリモート起動・シャットダウンの方法について

VB:VB6.0sp5

端末A
os:windows2000pro
IP:192.168.1.10
Physical Address:00-11-22-33-44-55
端末B
os:windows2000pro
IP:192.168.1.11 の場合、
Physical Address:00-12-34-56-78-90

(1)VBプログラムでどのようにすれば良いのでしょうか?

(2) また、RS-232C や USB 等でも可能でしょうか?
 何か便利ツール等ございましたらご紹介くださいます様

よろしくお願いいたします

Aベストアンサー

http://oshiete1.goo.ne.jp/kotaeru.php3?q=435498
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1186493

QVBScript(WHS)でWMIを使ってリモートでvbsファイルを実行したい

サーバAから、サーバBに置いてあるvbsファイル(Apache停止が書かれている)を実行して、サーバBのApacheを停止したいのですが、うまくいきません。
サーバBで単体でそのvbsファイルを実行すると、Apacheは正常に停止します。
 戻り値は、0(プロセス完了)が帰ってきていて、接続はうまくいっているようなのですが、vbsファイルが実行されていないようです。
 非常に困っておりまして、どなたか教えていただけないでしょうか?

vbsファイルの実行のところが間違っているのかなと思うのですが・・・(今まだ会社にいないので、会社でのソースそのままではないですが、同じような感じです)
--------------------------------------------
Option Explicit

Dim strComputer
Dim strUser
Dim strPassword
Dim strBAT

' -----------------------------------
' 環境設定
' -----------------------------------
strComputer = "サーバーB"
strUser = "username"
strPassword = "password"
strBAT = "c:\hoge.bat"

' -----------------------------------
' コマンド実行
' -----------------------------------
Dim objWbemLocator
Dim objWMIService
Dim objWin32_Process
Dim errReturn
Dim intProcessID

Const WbemAuthenticationLevelPktPrivacy = 6


' リモートに接続
Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer _
(strComputer, "root\cimv2", strUser, strPassword)

objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy

' Win32_Process クラスを生成
Set objWin32_Process = objWMIService.Get("Win32_Process")

errReturn = objWin32_Process.Create _
("cmd.exe /cscript C:\tmp\ApacheStop.vbs", Null, Null, intProcessID)
WScript.Quit(errReturn )


もともとの要件は、機能ごとに分けたvbsファイル(Apache停止、Windows再起動、ファイルバックアップなど)を、各サーバで実行するというものです。その制御は、ひとつのバックアップサーバーで行います。

サーバAから、サーバBに置いてあるvbsファイル(Apache停止が書かれている)を実行して、サーバBのApacheを停止したいのですが、うまくいきません。
サーバBで単体でそのvbsファイルを実行すると、Apacheは正常に停止します。
 戻り値は、0(プロセス完了)が帰ってきていて、接続はうまくいっているようなのですが、vbsファイルが実行されていないようです。
 非常に困っておりまして、どなたか教えていただけないでしょうか?

vbsファイルの実行のところが間違っているのかなと思うのですが・・・...続きを読む

Aベストアンサー

正式なコードではないということなので細かいミスは無視する方向で。

1.実行アカウントについて
実行するユーザーアカウントは、接続するユーザーアカウントと異なるのですか?
異なるのであれば問題ありません。
同じであれば、この記述は冗長です。

2.実行する実体について
C:\tmp\ApacheStop.vbs はこのスクリプトを実行するサーバー側に保存されていますか?

3.cscript は cmd を使わなくても実行できますよ。

4.イベントログの失敗の監査を有効にしてみてください。
 実行に失敗すると、セキュリティログかどこかに記録されるかもしれません。
 objWin32_Process.Create 以外のところで問題があれば記録されます。

Qネットワーク内のPCのシャットダウン

ネットワーク内のPCをシャットダウンしたいです
リモートデスクトップを使わずに、操作する側からコマンドやショートカットみたいな物でシャットダウンはできないでしょうか?

共有フォルダだけを使用したいのでPCのON/OFFが単純に出来ればいい

Wake On LANという機能が搭載されているパソコンなので今のところはONは解決していますが、ON/OFFの機能を備えたソフトがあれば紹介してください

よろしくお願いします

Aベストアンサー

http://www.forest.impress.co.jp/article/2006/01/26/remotepower.html

このソフトはどうでしょう?

Q[VB+DOSプロンプト]VBから .BAT ファイルを実行したい。

お世話になります~♪

VBであるソフト(ツール)を作っています。
途中でボタンをクリックして「jikkou.bat」を実行したいと考えています。

可能なのでしょうか?また、どのようにしてやればいいでしょうか?

いろいろやってみましたが、うまくいかないんです。
宜しくお願いいたします。

Aベストアンサー

メモ帳で
cd c:\windows
dir "c:\my documents"
calc
exit
を入力し、my documentsにaaa.batと名をつけ保存しました。
Private Sub CommandButton1_Click()
MsgBox "aaa実行"
Shell "c:\my documents\aaa.bat", vbNormalFocus
MsgBox "終了"
End Sub
を作り、ボタンをクリックしました。
実行され電卓が現われたりしました。
これでは良くご存知で質問するほどではないかと思うので、どの辺りにお困りですか。

Qwindows2000serverでシャットダウンの方法

windows2000serverでOSのシャットダウンの方法

一般ユーザー(アドミニ権限なし)で
 [スタート]→[シャットダウン] の方法以外でシャットダウンする
方法をご教示ください
 ログイン状態で[ctrl]+[Alt][Del]一回clickで
 windowsのセキュリティ画面にて[シャットダウン]clickしてもシャットダウンできません
 それ以外にシャットダウンする手段
 例えば、タスクマネージャ等
は御座いませんでしょうか?
 ない場合は強制終了させようと考えています

Aベストアンサー

リモートからシャットダウンできますか?
http://homepage2.nifty.com/winfaq/w2k/boot.html#893

Windows 2000/XP には緊急シャットダウンあるそうですが?
http://homepage2.nifty.com/winfaq/w2k/boot.html#1115

Windows 2000/XP をシャットダウン/パワーオフ/再起動するコマンドは?
http://homepage2.nifty.com/winfaq/w2k/boot.html#1001

Qvbsファイルにてaiueo.batを昨日の日付にて実行する方法について

vbsファイルにてaiueo.batを昨日の日付(2007 01 27)にて実行するため
下記のようなスクリプトファイルを作成しましたが、
最終行にてエラーにより処理が止まってしまいます。
置換の部分の処理にてエラーが発生しているのはわかっているのですが、
どのように修正を加えればよいのかがわかりません。
ご教授のほど、よろしくお願いします。

-----------------------------------------------------
Option Explicit

Dim strValue ' 変換する文字列
Dim strBefore ' 変換前の文字列
Dim strAfter ' 変換後の文字列

strValue = Date()
strBefore = "/"
strAfter = " "

Set wShell = CreateObject("WScript.Shell")
Set oExecute = wShell.Exec(aiueo.bat Replace(Date() -1, strBefore, strAfter))
-----------------------------------------------------

vbsファイルにてaiueo.batを昨日の日付(2007 01 27)にて実行するため
下記のようなスクリプトファイルを作成しましたが、
最終行にてエラーにより処理が止まってしまいます。
置換の部分の処理にてエラーが発生しているのはわかっているのですが、
どのように修正を加えればよいのかがわかりません。
ご教授のほど、よろしくお願いします。

-----------------------------------------------------
Option Explicit

Dim strValue ' 変換する文字列
Dim strBefore ' 変換前の文字列
Dim strAfte...続きを読む

Aベストアンサー

No.1です。
aiueo.batの中では、引数をどのように処理しているのでしょうか。

aiueo.bat yyyy mm dd

と引数を3つ渡して、バッチ内では%1,%2,%3で受け取っているのならうまくいくはずなのですが、コマンドプロンプトから直接上記コマンドを実行してうまくいくでしょうか。

もしaiueo.batの中で引数全体が1つとして扱われるのであれば、No.2の方の回答のように、"yyyy mm dd"となるようにする必要があります。

その辺の整合性がとれているか、確認してみてはいかがでしょうか。

Qシャットダウンスクリプトを実行するかどうか選択可能にする

マシンをシャットダウンする時、ローカルコンピュータポリシーに設定された
シャットダウンスクリプトを実行するかどうか選択する仕組みを作ることはできないでしょうか?

やりたいことは以下です。
・毎日PCの電源を切るときにスクリプトを実行したい
・それは、ログオフしてシャットダウンする前(シャットダウンスクリプトのタイミング)で実行したい
・ただしそのスクリプトは時間がかかる
・業務中にシャットダウン(or再起動)した時には、スクリプトを実行したくない
・1日の終わりにシャットダウンしたときだけスクリプトを実行したい

方向性としては2つあると思っております。
【方向性1】
業務中のシャットダウン(or再起動)は、スタート→シャットダウンで実行する。
帰宅前のシャットダウンでは、用意してあるスクリプトを実行してシャットダウンする。
そのスクリプトでは、シャットダウンスクリプトを設定してからシャットダウンする(shutdown.exe)
スタートアップスクリプトでは、シャットダウンスクリプトが設定されていれば、その設定を解除するようにしておく。
→ <質問1>スクリプトでシャットダウンスクリプトを設定/解除する方法が分かりません。

【方向性2】
<質問2>シャットダウンスクリプトを実行するかどうか選択してシャットダウンする方法が存在する?

環境 : Windows XP Pro XP3

<質問1><質問2>をご存知の方、ご教授お願いします。
また、上記以外の方向性で実装できる手段がありましたら、同じくご教授お願い致します。

マシンをシャットダウンする時、ローカルコンピュータポリシーに設定された
シャットダウンスクリプトを実行するかどうか選択する仕組みを作ることはできないでしょうか?

やりたいことは以下です。
・毎日PCの電源を切るときにスクリプトを実行したい
・それは、ログオフしてシャットダウンする前(シャットダウンスクリプトのタイミング)で実行したい
・ただしそのスクリプトは時間がかかる
・業務中にシャットダウン(or再起動)した時には、スクリプトを実行したくない
・1日の終わりにシャ...続きを読む

Aベストアンサー

スクリプトを修正してよいのであれば、たとえば、VBScript の場合は MsgBox で問い合わせできますよ。
シャットダウン スクリプトでも動作します。

参考URL:http://www.upken.jp/wiki/vbs_msgbox_sample.html

QVB上で実行とEXE後の実行に違い・・・

VB初心者です。
あるフォームの修正(Textの追加とそのコードの追加)を行い、そのまま実行するとうまくいくのですが、EXEにしてそれを実行すると以前に登録しておいたデータが登録されていません。何が悪いのでしょうか?

よろしくお願いします

Aベストアンサー

ソースを提示されたほうが、いいアドバイスを受けられると思います。

想像です。
App.Pathを使用されてます?
ソースのパスとEXEのパスがちがうとか?


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング