--------(--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2013-04-27(Sat)

Windows Server 2012のタスクスケジューラーからWSHを起動

Windows Server 2012のタスクスケジューラーからWSHを起動したいのですが、ちょっと動作が???です。

基本的にはタスクスケジューラーの[操作]タブの[プログラム/スクリプト]に、実行したいWSHのファイル名を登録すればOKですが、今回は以下の2点で注意が必要です。
1. WSHの中で32ビットでしか動作しないBASP21を使った処理がある
2. WSHから同じディレクトリの別WSHを呼び出す

1.については、32ビットのWSHを起動させるためタスクスケジューラーの[操作]タブを以下のように設定します。
[プログラム/スクリプト]欄:%SystemRoot%\SysWOW64\wscript.exe もしくは cscript.exe
[引数の追加(オプション)]欄:実行するWSHファイル名

2.については、別WSHを呼び出すためにタスクスケジューラーの[操作]タブを以下のように設定します。
[開始(オプション)]欄:WSHファイルがあるディレクトリ名


1.についてはこれで問題なく32ビットでWSHが起動されますし、この状態で別WSHを呼び出せば当然これも32ビットで起動します。
ところが、なぜか2.がうまくいきません。
タスクの実行ユーザーをビルトインAdministratorにした場合は問題ないのですが、それ以外の場合には権限的に問題ないユーザーでも別WSHの起動ができません。


実際のコードの肝心な部分は以下のようになっています。
■最初に起動するWSH
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "xxxxxxxx.vbs", SW_HIDE, Flase
Set WSHShell = Nothing


いろいろなパターンで確認してみた結果、正しく動作するパターンもあります。
■NG
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "testsub.vbs", SW_HIDE, Flase
Set WSHShell = Nothing

■OK
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "testsub.vbs", SW_HIDE, True
Set WSHShell = Nothing

■NG
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "testsub.vbs", SW_HIDE, Flase
WSHShell.Run "………", SW_HIDE, Flase
Set WSHShell = Nothing

■OK
Dim WSHShell
Set WSHShell = CreateObject("WScript.Shell")
WSHShell.Run "testsub.vbs", SW_HIDE, Flase
WSHShell.Run "………", SW_HIDE, True
Set WSHShell = Nothing


どうも最後に実行したWSHShell.Runの第2引数がFalse(終了を待ち合せない)の場合の動作がおかしいようです。
ちなみにこれは、64ビットで動作させても同じ結果になりましたが、タスクスケジューラー以外で実行した場合には全く問題はありません。


※全く関係ないのですが、Windows Server 2012ではATコマンドが無くなったのですね。


もう少し確認してみますが、ちょっと困りました・・・

コメントの投稿

管理者にだけ表示を許可する

コメント



 
プロフィール
Author:OMEGAT
FC2ブログへようこそ!
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
FC2カウンター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
忍者AdMax
検索フォーム
カテゴリ
ブロとも申請フォーム

この人とブロともになる

amazonお奨め商品



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。