質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

Q&A

4回答

14062閲覧

Windowsタスクスケジューラからのバッチ起動

zukka

総合スコア17

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Windows Server

Windows Serverとは、Microsoft社のサーバ用オペレーティングシステムの総称です。 企業内ネットワークなどで利用されるサーバ機へ導入することを想定して開発されているため高い安定性があり、 管理機能を提供するソフトウェアが多く含まれています。

0グッド

1クリップ

投稿2015/05/20 12:03

WindowsSerever2012R2の運用管理をしています。
今回、イベントログを別のWindowsファイルサーバ(同OS、バージョン)に
バックアップするバッチをつくろうと思っているのですが、
ShellとVBSもしくはPowershellどれで構築するとメンテナンス性が高いのでしょうか? 組み合わせで、この部分の処理はこの言語、とかでも可です。

ポイントは
・タスクスケジューラで自動実行する
・イベントログの保存は一年で、それより古いものは肥大化対策のために削除する
・WMIを使用してもいいが、元のイベントログの肥大化対策処理は必要
・バッチが正常に終了しなかった場合に検知できること
・バッチ自体の動作ログを残すこと

です。
普通に考えるとVBSかPoweshellなのですが、なぜかbatからvbsを起動するようにしている例が多く(社内には)、vbsを直接タスクスケジューラに登録するやり方はなにかデメリットが多いのかなと想像しています。

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

私の場合は vbs の実行ホストを cscript.exe にするために bat から vbs を呼ぶようにしています。

vbs は、直接実行すると既定では wscript 上で動きますが、bat で cscript を明示してやると cscript 上で動かすことができます(タスクスケジューラで cscript の引数に vbs を与えても同様のことができますが)。

cscript 上で動かすと標準出力が扱えるので他のコマンドとの連携やログが残しやすくなるメリットがあります。
また、bat を使って間接的に呼び出すことで、実装を vbs から js や powershell や exe に変更しても実行するコマンドが変化しないというメリットも考えられます(インターフェースと実装の分離・メンテナンス性)。

ちなみに、これから作るのではれば powershell で実装することをお勧めします。

投稿2016/07/03 02:53

asterisk9101

総合スコア49

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PowerShellで間に合いそうな気がします。

・イベントログの保存は一年で、それより古いものは肥大化対策のために削除する
→Remove-ItemとWhere-objectで削除用のスクリプトを作成する。
Remove-Item
Where-Object

・バッチが正常に終了しなかった場合に検知できること
・バッチ自体の動作ログを残すこと
→処理を開始する前にStart-Transcriptを実行して、処理が終了後にStop-Transcriptを実行する
Start-Transcript
Stop-Transcript

いかがでしょうか?

投稿2016/07/01 08:16

SD507

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

単純に社内の歴史的な経緯ではないでしょうか。
WSHがリリースされる以前からbatファイルでメンテナンスプログラムを作っていたりするところで、batファイルでできない処理のみ別のプログラムで対応する、というようなルールになっているとか。

実際に日次バッチとかすべてbatファイルを登録するルールになっていて、内部でcで書いたプログラムや、WSHを組み合わせて呼び出しているような現場を見たことがあります。

投稿2015/05/21 13:43

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zukka

2015/05/26 13:31

回答ありがとうございます。vbsがない時代の名残なのですね。
guest

0

vbsを直接タスクスケジューラに登録するやり方はなにかデメリットが多いのかなと想像しています。

ウィンドウを表示させないためにvbsからbatを呼ぶのはちょこちょこ見ましたが、逆はあまり見たことがありません。

メンテナンス性でVBSかPowerShellかと言われたら、PowerShellをおすすめします。

投稿2015/05/21 02:07

sho_cs

総合スコア3541

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zukka

2015/05/26 13:33

回答ありがとうございます。やはりメンテナンス面でもPowerShellがいいのですね。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

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

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問