WSH って、標準入力からスクリプトを流し込みできないもんだろうか、と思っていたのだが、
以下のスクリプトをあらかじめ用意しておけば、近いことができる。
(StdInExec.vbs として保存)
Option Explicit
Dim s
Dim hStdIn
Dim s
Dim hStdIn
Set hStdIn= WScript.StdIn
s= hStdIn.ReadAll
Execute(s)
hStdIn.Close
例えば、以下のように使う。
echo WScript.Echo DateAdd("d", 1, Date)'明日の日付を表示|CScript StdInExec.vbs
echo WScript.Echo eval("2^4-1")'動的計算|CScript StdInExec.vbs
echo Set objWMIService= GetObject("winmgmts:"):For Each objProcess In objWMIService.InstancesOf("Win32_process"):WScript.Echo objProcess.Name:Next'Process一覧(力技)|cscript stdinexec.vbs
echo WScript.Echo eval("2^4-1")'動的計算|CScript StdInExec.vbs
echo Set objWMIService= GetObject("winmgmts:"):For Each objProcess In objWMIService.InstancesOf("Win32_process"):WScript.Echo objProcess.Name:Next'Process一覧(力技)|cscript stdinexec.vbs
SQLServerなんかと組み合わせたりして、
xp_cmdshell 'echo WScript.Sleep(3000)|CScript //Nologo C:\work\StdInExec.vbs' --3秒待つ
馬鹿ですか。