vbscript でネットワーク内の実行中のコンピューターにメッセージ ボックスを表示するにはどうすればよいですか? 私はどこでも検索しましたが、答えが得られません。
質問する
7995 次
2 に答える
2
これはVBScriptにとっては少し高度な質問かもしれませんが、WSHではリモートスクリプトが許可されているため、WSHControllerにとっては可能なタスクです。もちろん、適切な構成が必要です。この記事では、このオブジェクトをセットアップするためのいくつかの手順を示しています。MicrosoftのWindowsScript5.6のドキュメントに詳細が記載されています。
リモートスクリプトでUIインタラクション(MsgBox、InputBoxなど)を許可しないいくつかの制限がありますが、これは、を使用して別のスクリプトを作成することでだまさFileSystemObject
れる可能性があります。
2つのスクリプトが必要です。1つはコントローラーマシンから実行し(名前はRemoteScript.vbs)、もう1つはターゲットマシンにコピーします(Messenger.wsf)。ここではコード全体を1つのブロックに投稿しますが、各部分を別々のファイルにコピーする必要があります。
REM ----------- RemoteScript.vbs code start here -------------
Const WshFinished = 2
Dim Controller, RemoteScript, RemoteServer
RemoteServer = "\\server_name"
Set Controller = WScript.CreateObject("WSHController")
Set RemoteScript = Controller.CreateScript("Messenger.wsf", RemoteServer)
WScript.ConnectObject RemoteScript, "WSH_"
RemoteScript.Execute
Do While RemoteScript.Status <> WshFinished
WScript.Sleep 200
Loop
WScript.DisconnectObject RemoteScript
Sub WSH_Error
With RemoteScript.Error
WScript.Echo "Error " & _
CStr(Hex(.Number)) & " - Line: " & .Line & _
", Char: " & .Character & vbCrLf & _
"Description: " & .Description
End With
WScript.Quit -1
End Sub
Function WSH_End()
MsgBox "wshRemote End Event fired"
End Function
Function WSH_Start()
MsgBox "wshRemote Start Event fired"
End Function
REM ----------- RemoteScript.vbs code end here ---------------
REM ----------- Messenger.wsf code start here ----------------
<package>
<job>
<script language="VBScript">
tmpFile = "c:\_tmp711a.vbs"
Set fso = CreateObject("Scripting.FileSystemObject")
Set fout = fso.CreateTextFile(tmpFile, true)
fout.WriteLine "MsgBox ""Remote Hello"", 0, ""Example"" "
fout.Close
WScript.Sleep 100
Set shell = CreateObject("WScript.Shell")
shell.Run "wscript " & tmpFile, 1, True
If fso.FileExists(tmpFile) Then fso.DeleteFile(tmpFile)
</script>
</job>
</package>
REM ----------- Messenger.wsf code end here ----------------
于 2013-01-30T21:29:04.463 に答える
0
次の Windows コマンドを使用できます。
を使用して VBScript からこれらのコマンドを実行できますWshShell.Run
。次に例を示します。
CreateObject("WScript.Shell").Run("net send computername Hello, world!")
于 2013-01-30T08:32:55.993 に答える