2016-04-29 11 views
1

スタートアップ時に少量のプロセスを実行するバッチファイルをまとめています。そのうちの1つは、特定のプログラムの再起動を実行することです一連のプロセスの終わり。私はWindowsのコマンドラインでこれを行う方法を探してきましたが、私はブラウザを開くことなくこれを行うことができる必要があります。私が必要とするのは、ブラウザを一切開かずに次のURLでリブートを実行することです。Windowsでブラウザーを開かずにコマンドラインからURLを実行する

http://192.168.1.100/cgi-bin/reboot 

私が試したことはすべて、新しいブラウザウィンドウを開いたことです。可能であれば、これをウィンドウに表示するために何かをダウンロードする必要はありません。ご意見ありがとうございます。

+0

xmlhttprequestを使用するか、PowerShellコマンドレットを使用して 'reboot'をダウンロードします。私は1時間か2分で例を挙げて答えます。 – rojo

+0

もしあなたが私にそれを感謝したい例を与えてくださいできます。 – Destroconut

答えて

2

ご質問の回答がnot necessarily the answer you needであることは時々知っていますか?私はあの時代の一つかもしれないという曖昧な疑惑を持っています。

これは再起動しようとしているWindowsマシンの場合、リモートホストが提供するCGIスクリプトを使用せずにリモートで再起動できます。起動しているPCでログインしているアカウントにもリモートPCの権限がある場合は、shutdownコマンドで再起動をトリガーできます。

shutdown /m \\remotePC /r /t 0 

Do shutdown /?詳細については、cmdコンソールを参照してください。認証する必要がある場合は、代わりにwmicを使用できます。私が間違っていた場合は


wmic /node:remotePC /user:remotePCadmin /password:remotePCpass process call create "shutdown -r -t 0" 

は、ここにあなたが尋ねた質問への答えです。リモートCGIスクリプトを実行する最も速い方法は、Windows Script Host(VBScriptまたはJScript)でXMLHTTPRequestを使用することです。ここに例があります。何が価値があるために

@if (@CodeSection == @Batch) @then 
@echo off & setlocal 

set "URL=http://192.168.1.100/cgi-bin/reboot" 
cscript /nologo /e:jscript "%~f0" "%URL%" 

goto :EOF 
@end // end batch/begin JScript chimera 

var x = WSH.CreateObject("Microsoft.XMLHTTP"); 

x.open("GET",WSH.Arguments(0),true); 
x.setRequestHeader('User-Agent','XMLHTTP/1.0'); 
x.send(''); 
while (x.readyState != 4) WSH.Sleep(50); 

必要に応じて、あなたもx.responseTextを解析することができます。フラットテキストとしてスクラップしたり、それを階層DOMオブジェクトとして評価することもできます。 This answer demonstratesそのような解析。そして、ちょうど十分に得ることができないなら、here are more examples


効率を犠牲にしてより簡単な方法を使用したい場合は、PowerShellコマンドを呼び出すことができます。

@echo off & setlocal 

set "URL=http://192.168.1.100/cgi-bin/reboot" 
powershell "ipmo BitsTransfer; Start-BitsTransfer \"%URL%\" \"%temp%\a\"" 
del /q "%temp%\a" 

goto :EOF 

おそらく代わりに、一時ファイルを避けるためにInvoke-WebRequestを使用することができますが、Invoke-WebRequestはPowerShellのバージョン3以降が必要です。 Start-BitsTransferはPowerShellバージョン2で動作するため、より多くのコンピュータで動作するはずです。 [System.Net]::WebRequest .NETクラスを使用することもできますが、HTTPヘッダーを取得してからWebサーバーにWebページを提供することに進むために必要なすべてのオブジェクトを少し複雑にします。好奇心が強い場合は、次のようになります。

powershell "[void](new-object IO.StreamReader([Net.WebRequest]::Create(\"%URL%\").GetResponse().GetResponseStream())).ReadToEnd()" 

私は単純なものとは言えません。簡単に読みやすくするためのハイブリッド形式では:

<# : batch portion 
@echo off & setlocal 

set "URL=http://192.168.1.100/cgi-bin/reboot" 
powershell -noprofile "iex (${%~f0} | out-string)" 

goto :EOF 

: end batch/begin PowerShell hybrid chimera #> 

$request = [Net.WebRequest]::Create($env:URL) 
$response = $request.GetResponse() 
$stream = $response.GetResponseStream() 
$reader = new-object IO.StreamReader($stream) 
[void]$reader.ReadToEnd() 

いずれの場合も、任意のPowerShellの解決策は、第二またはこの回答の上部近くのJScriptソリューションよりも2遅くなります。 powershell.exeには2〜2秒かかります(実際には、Windowsが最後に再起動されてからロードされていない場合は数秒です)。 cscript.exeはほぼ即座に発火する。

+0

を参照してください。再起動されているマシンはWindowsマシンではありません。私は元の質問でそれを述べたはずです。私はあなたの2番目と3番目のソリューションを試してみて、私が探しているものに最適なものを見ていきます。 – Destroconut

+0

@Destroconut判決は何ですか? – rojo

+0

powershellスクリプトを実行しようとすると、powershellアプリケーションウィンドウが開き、非常に迅速に終了しますが、目的の結果は表示されません。また、それはすぐに開き、何が起きているのかを見るためにテキストを読むことができます。私はちょうどすべての箱にカールを送る必要があるかもしれません...それをしなければならないことを望んでいませんでした。 – Destroconut

1

何もダウンロードできない場合は、Windows PowerShellが最適です。あなたは、バッチファイルでコマンドラインから直接PSスクリプトファイルからそれを呼び出す、またはすることができます:あなたは、プロセスのそのタイプのためCurlを考慮することができる

powershell.exe -noprofile -command "Invoke-WebRequest -Uri http://192.168.1.100/cgi-bin/reboot" 

。 Windowsには同等のものはないので、ダウンロードが必要です。

curl http://192.168.1.100/cgi-bin/reboot 

カールは、ブラウザのウィンドウを開き、(curl -helpを参照)偉大なコマンドラインオプションがあり、バッチファイルのエラー処理のためのエラーコードが返されますことはありません。

+0

提案してくれてありがとう、私はそれを試して、それがどのように判明した今あなたをさせてください。 – Destroconut

+0

ダウンロードすることができないかもしれない複数のマシンにこれを置かなければならないので、私は実際にこれを達成する方法を見つける必要があります。 – Destroconut

+0

'Invoke-WebRequest'はWindows 10(そしておそらく8.x?)でもうまく動作しますが、バッチスクリプトから呼び出されたときにPowerShellバージョン2にデフォルトで使用されたすべてのWindows 7マシンが動作します。 – rojo

1

Windowsにはこの機能が搭載されていないと思います。

ブラウザのWindowsが開きますが、何も表示されないVBscriptを作成してみてください。

関連する問題