WSH はめんどくさい

WSHを始めよう @IT

連載開始記念。

WSH は面倒だ。それは WSH 自身は自動化するための道具じゃないから。WSH は単にスクリプト言語と OS を多少仲良くさせるための土台でしかない。

WSH は面倒だ。tips ばかりで体系的な資料が少ない。まるで Web 上に散見される Linux セットアップ情報と同じだ。

WSH は面倒だ。スクリプト言語は結構いろんなものが選べるはずなのに、ほとんどのサンプルは VBScript で、Un*x 系の人間にとって悪夢みたいなものだから。1

WSH は面倒だ。実は WSH のインターフェイスだけではできないことが多い。例えばファイルアクセス。これは WSH では提供されていない。WSH とはまた異なるライブラリである FileSystemObject を使うんだ。びっくりだろう?

WSH は面倒だ。実は WSH のインターフェイスだけではできないことが多い。WMI とか ADSI とか CDO とか知らないと結局外部コマンド頼みだ。しかも標準で用意されている外部コマンドではできないこともまた多いんだ。

WSH は面倒だ。WMI や ADSI に関しては WSH よりぐっと情報が少ない。オブジェクトの定義を示した英語のリファレンスは存在するので、それを読んで「こうかな?」とコードを組み立てていく必要がある。

WSH は面倒だ。ってゆーか WMI で出てくる奇妙なおまじないや WQL?ってゆーの? あれがキモイ。<> とか BASIC 風なのはゲイツの呪いかとか思っちゃう。Windows に触る限り BASIC 文化からは逃れられないってか。

WSH は面倒だ。CDO に至ってはもはや現行の資料があるんだかどうだかあやしいレベルだ。WSH と CDO を使ってメールを送信するサンプルスクリプトはいくつか見つかるが、じゃあ CDO では他に何ができるのか、教えてくれるサイトは Microsoft を含めてないに等しい。2

WSH は面倒だ。なぜなら提供されるライブラリが「機能するコマンド」ではないから。これらはあくまでプログラマが扱うオブジェクトなんだ。OS が持ってる情報を、多少スクリプトからも利用しやすいようにラップしただけなんだもの。プログラミングが得意な人ならともかく、管理コストを下げたいだけの人に対してはハードルが高いと言わざるを得ない。たぶん Visual WSH Studio なんつー製品が出る日も近い。


連載への期待と自身が WSH へ感じた落胆をミックスしてネタにしてみた。

基本的に Windows の管理の自動化は Unix の管理の自動化より面倒だと思う。標準で揃ってる道具に違いがありすぎる。log の rotate 一つサクっとできないだけで十分にいやな思いを満喫できるってもんだ。スクリプトに関しては MSH3 ベースになったら多少面白いかなとは思うんだけど4、そうするとまたイチからノウハウの溜め直し。この「以前のノウハウが死んでしまうことがやたら多い」のも管理する側からすると Windows の決定的にダメなところ。新機能が嬉しいなんて思うのは営業と広告記事書く人と何も分からずにお金だす人だけ。管理する人間にとっては同じノウハウが長い間通用して安定して動くことの方が何倍も嬉しい。

あと MSH/Windows PowerShell が .NET Framework 前提なのは旧世代の人間からすると嬉しくないですな。そんな追加追加でやっていいなら ActivePerl 入れてゴリゴリやっちゃうよと思ってしまう。だってその方が Windows 独自の話に悩まなくてよくなる部分が増えてハッピーだもの。

ちゅーことでスクリプトについては Vista に期待ってことで(え

※ おめーはこんな情報も押さえてねーのか、ってツッコミは大歓迎です。

参考

アサマシも含めて手元の資料を吐き出しておく。

WSH

microsoft のサイトはできるだけ英語の方を探した方がよい。日本語版は訳が追いついてなくて結構な数のページが存在しない。あと、CHM ファイルに関するグチはこの資料を見てて感じたものです。絶対使いにくいって!

WMI & ADSI

Scriptomatic っていうツールがあるんですが、要するにただのサンプル閲覧環境ってだけで別に嬉しくなかった。なんかすげー絶賛されてたりするんだけど、なんでか分からん。まぁオフラインでも WMI とか ADSI 使ったスクリプトの開発ができますよってことか?

CDO つか Messaging

自由度を求めるなら CDO は使わずに Command Line SMTP Mailer for WindowsXMail Home Page (日本語) や BSENDM EXE などなどの SMTP クライアント(サーバ)を自前で用意した方がたぶん確実で早い。余計なものを入れたくない気持ちは分かるが、標準状態の Windows はつらすぎる。

※ しまった。タイトルは「あなたが WSH を使うべきでない10の理由」にするんだった!

  1. てゆーか Windows 自身はオブジェクトの固まりなのに VB がオブジェクト指向じゃなくて超キモイんですけど?(ストレスの位置に注意) 

  2. 言い過ぎかも。でも見つけられなかったんだよぉ。例えば POP before SMTP を使って警告を携帯に投げるとかできたら面白いのにさ。 

  3. 正式名称は Windows PowerShell になったそうだ。 

  4. ほんとは MOM スクリプトと言いたいところだけど、まだそこまで分かりません。 

More

Categories

Tool 日々 Web Biz Net Apple MS ことば News Unix howto Food PHP Movie Edu Community Book Security Text TV Perl Ruby Music Pdoc 生き方 RDoc ViewCVS CVS Rsync Disk Mail FreeBSD Cygwin PDF Photo Zebedee Debian OSX Comic Cron Sysadmin Font Analog iCal Sunbird DNS Linux Wiki Emacs Thunderbird Sitecopy Terminal Drawing tDiary AppleScript Life Money Omni PukiWiki Xen XREA Zsh Screen CASL Firefox Fink zsh haXe Ecmascript PATH_INFO SQLite PEAR Lighttpd FastCGI Subversion au prototype.js jsUnit Apache Trac Template Java Rhino Mochikit Feed Bloglines CSS del.icio.us SBS qwikWeb gettext Ajax JSDoc Rails HTML CHM EPWING NDTP EB IE CLI ck ThinkPad Toy WSH RFC readline rlwrap ImageMagick epeg Frenzy sysprep Ubuntu MeCab DTP ERD DBMS eclipse Eclipse Awk RD Diigo XAMPP RubyGems PHPDoc iCab DOM YAML Camino Geekmonkey w3m Scheme Gauche Lisp JSAN Google VMware DSL SLAX Safari Markdown Textile IRC Jabber Fastladder MacPorts LLSpirit CPAN Mozilla Twitter OpenFL Rswatch ITS NTP GUI Pragger Yapra XML Mobile Git Study JSON VirtualBox Samba Pear Growl Mercurial Rack Capistrano Rake Win RSS Mechanize Sitemaps Android JavaScript Python RTM OOo iPod Yahoo Unicode Github iTunes God SBM friendfeed Friendfeed HokuUn Sinatra TDD Test Project Evernote iPad Geohash Location Map Search Simplenote Image WebKit RSpec Phone CSV WiMAX USB Chrome RubyKaigi RubyKaigi2011 Space CoffeeScript Nokogiri Hpricot Rubygems jQuery Node GTD CI UX Design VCS Kanazawa.rb Kindle Amazon Agile Vagrant Chef Windows Composer Dotenv PaaS Itamae SaaS Docker Swagger Grape WebAPI Microservices OmniAuth HTTP 分析基盤 CDN Terraform IaaS HCL Webpack Vue.js BigQuery Middleman CMS AWS PNG Laravel Selenium OAuth OpenAPI GitHub UML GCP TypeScript SQL Hanami Develop Document Jekyll