ローカルサーバーでWSHを動かす時にはログインは必要か
ローカルサーバーでWSHを動かす時にはログインは必要か
答え:必要です
そうなんです、必要なんです。
これは最初の盲点でした。
Wshで指示している事はキーボード操作を含むことが多い
例えば、こんな指示があります。
var Shell = WScript.CreateObject ("WScript.Shell");
//コマンドプロント起動
Shell.Run ("\"%windir%\\system32\\cmd.exe")
WScript.Sleep( 1000 )
//ファイル移動
Shell.SendKeys("move C:\\Users\\hoge\\Documents\\*.csv C:\\app\\csv_list");
Shell.SendKeys( "{ENTER 1}" ); WScript.Sleep( 1000 );
Shell.SendKeys( "%{F4}" ); WScript.Sleep( 100 );
ユーザーhogeのマイドキュメントの中からcsvデータを全て Cドライブのapp\csv_list に移動しろという指示です。
この後にFTPソフトのFileZillaを起動してアップロードしろという指示が入るのですが、ログオフ状態の時FTP更新は実行されませんでした。
Windowsのタスクスケジュール上はhoge.jse実行タスクに履歴が入っているので、処理は拾ったのだと思います。
問題は販売管理かファイル操作かFileZillaか。
まぁ、結果として『意図した動き』にはなりませんでした。
知人に聞いたところ、キーボード操作(Shell.SendKeys)が入る場合はログインしとけとの事。
言われた通りログインしているとあっさり実行してくれます。
Automation化の場合、キーボード操作が入る事は多いと思うのでログイン必須と覚えておきましょう。
まとめ
ローカルWindowsサーバーは操作すると言うよりもDBとしての用途で使われている事が多いと思います。
その為、Windowsサーバーでのログインは実行せず、クライアントからサーバーDBにアクセスしてclient側で操作と言う使い方がほとんどだと思います。
Windows10には標準でタスクスケジューラーがあるので、無理してサーバーを自動操縦する必要もないですよね。
リスクを考えれば、クライアント側に仕掛けるのがベストだと思います。
ただ、難点は自動操縦している間は他の処理ができないと言う事。
だからサーバーで操作したくなるんですよね。


