PowerShellの盲点

パソコンのメンテにWindows Scripting Hostを使ってきた。Java Scriptも結構気に入っている言語なので、それを使えるのも嬉しい。exeやdllは10年近く作っていない。もっぱらWSHやASPで自宅の環境を整えてきた。なんと保守的な

1年くらい前にVisual Studio Expressを使い始めた。「無償」に反応してしまった。「俺だってプログラムの一つや二つ作れるわい」と職場で後輩に言いたかったのも理由
久々のexe開発で、いきなり.NETで躓いたが、Web頼りで克服。今まで作ったexeも.NET化。「よし、スクリプトでも.NETを使おう!」と思ったら、PowerShellでないと使えない。
WSHに慣れてきたのに・・・。でも、これから無くなっていくテク。意を決して、PowerShellもお勉強。今までWSHで作ってきたものの移植を開始してまた躓いた。

タスクスケジューラでバックグラウンドのバックアップジョブを仕掛けたら、いちいちPowerShellが画面に出てくる。「あれ?-WindowStyle Hiddenを指定したのに・・・」。なんと、PowerShellはバックグラウンドでの実行はできないとのこと。
http://www.atmarkit.co.jp/fwin2k/operation/pshvswsh/pshvswsh_02.html

仕方ないから、WSHでPowerShellをバックグラウンドで起動するスクリプトを組んだ。タスクスケジューラからは、このKickPS.jsを登録し、パラーメタとして、PowerShellのスクリプトを渡す。一応一件落着
でも、せっかくWSHからPowerShellへの移行を行ったのに、結局WSH使うなんて、美しくない


-------KickPS.js---------
//PowerShellを画面非表示で起動するWindows Scripting Host
//こんなものの手を借りなければならないなんて、PowerShellも情けない・・・トホホ


wsShell = WScript.CreateObject("WScript.Shell");
retCode = wsShell.Run("powershell -File \".\\" + WScript.Arguments.Item(0) + "\"", 0, true);
WScript.Quit(retCode);
-----------------------


一言
PowerShellは、WSHより、よりシステム運用管理に寄っているように思う。WSHはvbsやjsが使え、ロジックを組み込み易かったが、PowerShellは独自言語スタイルで、何となく見辛い(慣れかな?)。ロジックはC#などで部品を作り、その連携を司るくらいに考えた方が良さそうだ。でも、そこまで運管寄りにするなら、バックグラウンドでの実行くらい、標準でサポートして欲しかった。

この記事へのコメント

この記事へのトラックバック