[Scripting] | |||||||||||||
WSHに渡された引数の妥当性を自動検証する
|
|||||||||||||
|
解説 |
Windows TIPS「WSHスクリプトでヘルプ・メッセージを表示する」でも紹介したように、WSHスクリプト(「.wsf」ファイル)では、<runtime>要素を利用することで、コード内で使用する引数情報を宣言することができる。
しかしここで注意していただきたいのは、WSHは実行時にこの<runtime>要素を参照して「いない」ということだ。つまり、宣言されたものとは異なる引数を実行時に渡したとしても(また、必須で要求されている引数を渡さなかったとしても)、WSHは特別なエラーを返さない。もちろん多くの場合は、その引数を利用して何らかの処理を行うタイミングで実行時にエラーが返されるはずであるが、コードの内容によっては、エラーすらも返さずに誤った内容で処理を継続してしまう可能性もある。予期せぬ不具合を招かないためにも、最低限、引数の内容を処理前に検証しておくことは欠かせない。
ただ、このような入力データの妥当性検証は、単調であるだけに煩雑であることが多い。本来のコードのほかに、いちいち検証ロジックを記述しなければならないのは、間違いのもとであるだけでなく、本来のロジックを読みにくくする原因ともなる。また、引数情報を<runtime>要素とスクリプト・コードとで二重管理しなければならないのも面倒である。スクリプト・コードは修正したのに、<runtime>要素は未修正のままだったなどということはよくあることだ。
|
そこで本稿では、<runtime>要素で定義された引数情報を実行時に動的に取得し、入力パラメータを検証するためのスクリプトレット・コンポーネントを作成・紹介する。「スクリプトレット(ScriptLets)」とは、スクリプト言語でCOMコンポーンネントを作成するための技術だ。スクリプトレットを利用することで、Visual Basic(VB)やC++言語のように高度なプログラム言語を使わなくても、簡単にコンポーネントを作成することができる。ここで紹介する検証コンポーネントを利用すると、WSHスクリプトでは定型的なコードを埋め込むだけで、入力データの検証処理(およびエラー時にはエラー・メッセージの出力)を行うことができる。
操作方法 |
手順1―テキスト・エディタでスクリプトレットのコードを入力する
まずはテキスト・エディタ(メモ帳でも何でもよい)を開き、以下のコードを入力してほしい。なお、引用符(')で始まる行はコードの意味を解説するためのコメント部分なので、省略してもよい。
※ファイルvalidation.wsf |
- サンプル・ファイルのダウンロード
(注:サンプルvalidation.wscを実行するには、上のサンプル・ファイルを右クリックしてvalidation.wscというファイル名で保存する)
スクリプトレットの実行ファイルは拡張子「.wsc」(Windows Scripting Components)とする必要がある。ファイル名自体は何でもよいが、ここでは「validation.wsc」という名前で保存しておこう。
スクリプトレット・コンポーネントは、使用に先立ってレジストリに登録しておく必要がある(登録には管理者権限が必要となる)。具体的には、エクスプローラで該当ファイルを右クリックし、表示されたコンテキスト・メニューから[登録]を選択する。ただしレジストリへの登録後もファイルは削除してはいけないので(登録時の場所に置いておく必要がある)、あらかじめスクリプト登録用のフォルダなどを作成して、保存しておくとよいだろう。
スクリプトレット・コンポーネントの登録 | |||
スクリプトレット・コンポーネントを利用するには、最初にレジストリに登録しておく必要がある。登録を解除するには、コンテキスト・メニューから[登録解除]を実行すればよい。 | |||
|
登録が完了すると、次のようなダイアログが表示されるはずである。
スクリプトレット・コンポーネントの登録完了の通知 |
コンポーネントの登録が正常に完了すると、このようなダイアログが表示される。 |
手順2―テキスト・エディタでWSHスクリプトのコードを入力する
次に、上で作成したスクリプトレット・コンポーネントを利用するためのWSHスクリプトを作成しておこう。取りあえず検証処理が正しく動作することを確認するためだけのコードであるので、<script>要素内のスクリプト・コードも必要最小限のものにとどめている。
※ファイル valid.wsf |
- サンプル・ファイルのダウンロード
(注:サンプルvalid.wsfを実行するには、上のサンプル・ファイルを右クリックしてvalid.wsfというファイル名で保存する)
WSHの実行ファイルは拡張子「.wsf」(Windows Scripting host File)とする必要がある。ファイル名自体は何でもよいが、ここでは「valid.wsf」という名前で保存しておこう。
手順3―WSHのコードを実行する
valid.wsfを実行するには、コマンド・プロンプトから以下のようなコマンドを入力する必要がある。
C:\> valid.wsf /address:sample@example.com /replace:+ C:\mail.txt |
これは正しい実行コマンドなので、次のようなダイアログが表示されるはずである。
|
|||
だが、例えば、/addressオプションを省略したり、/replaceオプションに「+」「-」以外の値を指定したりしてみよう。すると、次のようなダイアログが出力されるはずだ。引数の値、また、「.wsf」ファイルで<runtime>要素の設定を変更するなどして、表示の変化を確認してみてほしい。
|
|||
なお、本サンプルでは、コード簡素化のために1ファイル複数ジョブには対応していない、<named>…<unnamed>要素のmany/required属性などブール型の値に1、0は指定できないなどの制限もある。だが修正はさほどに難しいことではないので、必要に応じて適宜修正して活用いただきたい。
関連記事 | ||
Windows TIPS:WSHスクリプトでヘルプ・メッセージを表示する(Windows Server Insider ) | ||
この記事と関連性の高い別の記事
- よく利用するジョブをスクリプトレットでコンポーネント化する(TIPS)
- WSHスクリプトの仕様書を生成する(TIPS)
- WSHスクリプトでヘルプ・メッセージを表示する(TIPS)
- スクリプトレット・コンポーネントでプロパティを定義する(TIPS)
- スクリプトレット・コンポーネントでリソース情報を定義する(TIPS)
このリストは、デジタルアドバンテージが開発した自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
「Windows TIPS」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|