\r\n\r\n```","dateModified":"2017-06-14T09:00:23.479Z","datePublished":"2017-06-14T09:00:23.479Z","upvoteCount":0,"url":"https://teratail.com/questions/80183#reply-126244","comment":[]},{"@type":"Answer","text":"両立は出来ないと思うので、プロセス起動後に、プロセス一覧を取得して、実行中のプロセスが終了するまでsleepしながら、ループするくらいでしょうか。","dateModified":"2017-06-13T13:36:46.599Z","datePublished":"2017-06-13T13:36:46.599Z","upvoteCount":0,"url":"https://teratail.com/questions/80183#reply-126072","comment":[{"@type":"Comment","text":"ご解答ありがとうございます。\r\nプロセスの起動等、よくわかっていないのですが、shellexecuteのやり方にプロセス起動の処理を追加するようなイメージでしょうか?","datePublished":"2017-06-13T23:55:23.947Z","dateModified":"2017-06-13T23:55:23.947Z"},{"@type":"Comment","text":"shellexecute =「プロセスの起動」\r\nです。","datePublished":"2017-06-14T00:18:29.421Z","dateModified":"2017-06-14T00:18:29.421Z"},{"@type":"Comment","text":"プロセスが終了するまでループとは、たとえばどのような処理になるでしょうか?\r\n自分で調べるべきということは重々承知しておりますが、急ぎの案件ですのでお力添えいただけると助かります!","datePublished":"2017-06-14T04:17:28.700Z","dateModified":"2017-06-14T04:17:28.700Z"},{"@type":"Comment","text":"ループは、do ~ loop です。プロセスが終了したら、exit doでループを抜けます。\r\n実行中のプロセス一覧を得るのは、「vbs プロセス一覧」とかでググって下さい。\r\n> 急ぎの案件ですので\r\n急がば回れです。\r\n","datePublished":"2017-06-14T08:57:50.738Z","dateModified":"2017-06-14T08:57:50.738Z"}]},{"@type":"Answer","text":"スクリプトの中で管理者権限を持つユーザーに昇格することはできません。管理者権限で起動したコマンドプロンプトから自分のスクリプトを起動するか、自分のスクリプトを起動するバッチファイルを作って、それを管理者権限で実行すれば良いと思います。","dateModified":"2017-06-13T13:06:57.215Z","datePublished":"2017-06-13T13:06:57.215Z","upvoteCount":0,"url":"https://teratail.com/questions/80183#reply-126062","comment":[{"@type":"Comment","text":"runas では管理者権限で実行できないということでしょうか?\r\n実行ファイルは複数にしたくないのですが、やりようないんですかね。。","datePublished":"2017-06-13T23:53:56.115Z","dateModified":"2017-06-13T23:53:56.115Z"},{"@type":"Comment","text":"言葉足らずでした。\r\n「スクリプトの途中の処理から管理者権限が必要な処理を行えない」ですね。おっしゃるように、runasも手段の一つだと思います。","datePublished":"2017-06-14T03:12:32.423Z","dateModified":"2017-06-14T03:12:32.423Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://teratail.com","name":"トップ"}},{"@type":"ListItem","position":2,"item":{"@id":"https://teratail.com/tags/Windows","name":"Windowsに関する質問"}},{"@type":"ListItem","position":3,"item":{"@id":"https://teratail.com/questions/80183","name":"vbsからコマンド実行して、その処理が終わるまで次の処理に行かないようにしたい"}}]}}}
VBSファイルから外部コマンドを実行して、その処理が終わるまで次の処理を走らさないようにしたいです。
WshShell.Runを使用することで、それは可能だということはわかったのですが、
今度は管理者権限でコマンド実行する方法が分かりません。
WshShell.Runでも管理者権限で実行できるのでしょうか?
現状はこれでコマンド実行できているのですが、処理が終わる前に次の処理が走ってしまいます。。
Set app = Wscript.CreateObject("Shell.Application")
	'app.ShellExecute "Dism.exe", "/online /enable-feature /featurename:NetFX3 /All /Source:C:\sources\sxs /LimitAccess", ,"runas"
下記のようにWshShell.Runにすると、管理者権限で実行できない。。
	Dim WshShell
	Set WshShell = WScript.CreateObject("WScript.Shell")
	WshShell.Run("Dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:C:\sources\sxs /LimitAccess")
どなたかご教授いただけると幸いです。
自身を管理者権限で再起動する手段ではいかがでしょうか?
VBScriptを管理者権限で実行する
Win10x64で動作しました。
手順
- hoge.wsfをダブルクリックして起動
- UAC画面が表示されるので「はい」を選択
- dism.exe画面が表示~実行される
- 終了(長いのでCtrl+Cで中断)後に「end」表示される。
hoge.wsf
VBScript
1<job>
2<script language="VBScript">
3' Vista以上なら、このスクリプトを管理者権限で再起動する
4do while WScript.Arguments.Count=0 and WScript.Version>=5.7
5    'WScript.Echo "for runas ScriptFullName[" & WScript.ScriptFullName & "]"
6    'Run this script as admin.
7    Set sha=CreateObject("Shell.Application")
8    sha.ShellExecute "wscript.exe","""" + WScript.ScriptFullName + """ uac","","runas"
9    WScript.Quit
10loop
11'WScript.Echo "main ScriptFullName[" & WScript.ScriptFullName & "]"
12
13' 実際の処理
14
15Set WshShell = WScript.CreateObject("WScript.Shell")
16' 1=画面表示, True=同期
17WshShell.Run "Dism.exe /Online /Cleanup-Image /ScanHealth", 1, True
18
19' 終了後に表示される
20WScript.Echo "end"
21</script>
22</job>
両立は出来ないと思うので、プロセス起動後に、プロセス一覧を取得して、実行中のプロセスが終了するまでsleepしながら、ループするくらいでしょうか。
スクリプトの中で管理者権限を持つユーザーに昇格することはできません。管理者権限で起動したコマンドプロンプトから自分のスクリプトを起動するか、自分のスクリプトを起動するバッチファイルを作って、それを管理者権限で実行すれば良いと思います。
15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。