2005-09-01から1ヶ月間の記事一覧

MSHのデバッグ手法(1)

MSH

MSHは、デバッグのための仕組みが色々用意されています。 「$DebugPreference」と「Write-Deubg」 スクリプトの処理を一時停止させ、変数の値を確認するサンプルです。 MSH C:\> $DebugPreference = "Inquire" MSH C:\> $a = 0 MSH C:\> $b = 0 MSH C:\> whi…

ScriptBlockを実行する(2)

MSH

ScriptBlockを実行する - PowerShell Memoで、「&(アンバサンド)」では引数は受け取れないようです。 と書きましたが、それは正しくはありませんでした。 文字列形式のスクリプトに対して、「&」で引数は取れませんが、 ScriptBlockに対しては、「&」でも引…

.NET2.0:MaskedTextBoxコントロール

MSH

.NET2.0で追加されたWindowsフォームコントロールである 「MaskedTextBoxコントロール」を利用したサンプルです。 MaskedTextBoxは値のValidation機能が便利です。 サンプルでは、日付を正しく入力するとラベルに「OK」の文字を表示し、 正しくない場合は「N…

ScriptBlockを実行する

MSH

「{」と「}」で囲んだScriptBlockは変数に代入できます。 また、Invokeメソッドで実行も可能です。 ScriptBlockを実行する(引数なし) MSH C:\> $a = {get-date} MSH C:\> $a.Invoke() 2005年9月27日 0:28:28 ScriptBlockを代入した「$a」の型は「System.Ma…

Objectの型を調べる

MSH

Objectの型を調べるサンプルです。 Objectの型を調べる MSH C:\> $a = [xml]"<a>bbb</a>" MSH C:\> $a.GetType().fullname System.Xml.XmlDocumentMSH C:\> $regex = [regex]"[0-9]+" MSH C:\> $regex.getType().fullname System.Text.RegularExpressions.RegexMSH …

profile.mshをカスタマイズする

MSH

シェルでお馴染みの「profile.xxx」。MSHでは「profile.msh」がこれに相当します。 profile.mshはどこに置けばよいのか? デフォルトでは「C:\Program Files\Microsoft Command Shell\Examples」にprofile.mshがありますが、 このままではMSH起動時に読み込…

ユーザに文字列を入力させる(3)

MSH

コンソールからユーザに文字列を入力させるサンプルは以下で紹介しました。 ユーザに文字列を入力させる(1) - PowerShell Memo ユーザに文字列を入力させる(2) - PowerShell Memo 今日は、VB.NETのInputBox関数を利用して、ユーザに文字列を入力させるサン…

ユーザに文字列を入力させる(2)

MSH

ユーザに文字列を入力させる(1) - PowerShell Memoの続きです。 SecureStringとは? 「read-host」の「SecureString」オプションを使うと、戻り値の型は「System.Security.SecureString」になります。 「SecureString」はメモリ上で暗号化されるセキュアな…

ユーザに文字列を入力させる(1)

MSH

インタラクティブなプログラムでは、ユーザに文字列を入力させる事はよくあります。 もちろんMSHでも「ユーザがコンソールに入力した文字列を受け取る処理」は可能です。 ユーザ名とパスワードを入力させる 「read-host」を利用することで、コンソールから文…

MSHでGUIプログラミング

MSH

今日はWorking with Objectsを参考にGUIプログラミングです♪ GUIと言えば「system.windows.forms」 .NETではお馴染み、GUIと言えば「system.windows.forms」クラスです。早速、Working with Objectsのサンプルを実行してみます。 $form = new-object system.…

Tabに注意?

MSH

Tabに注意? DOSからMSHを起動し以下のコマンドを貼り付けて実行してみます。 $a = "Test" write-host $a # $aの後ろに半角スペース write-host $a # $aの後ろにタブすると、 MSH C:\> $a = "Test" MSH C:\> write-host $a # $aの後ろに半角スペース Test MS…

基本構文(12)

MSH

参考:MSH Language and Syntax 「Command Mode」と「Expression Mode」 MSHがコマンドを構文解析する際、「Command Mode」と「Expression Mode」の2つのモードが存在します。 モードによって構文の解釈の仕方が異なる事を知っておく必要があるでしょう。 E…

「COMオブジェクト呼び出し」の制限

MSH

Beta2ではCDO(Collaboration Data Objects)は未サポート Beta2からCOMオブジェクトを利用できるようになりましたが、全てのCOMをサポートはしていません。Working with Objectsによると、CDOは未サポートだそうです。 CDOを利用した「メール送信処理は」は非…

Staticメソッド/プロパティにアクセスする

MSH

MSH Beta2になって、SDKの構成と内容が少し変更されました。「Working with Objects」はBeta2で追加されたページで、オブジェクトに対するアクセス方法がまとめてあります。 Staticなメソッドやプロパティにアクセスするには「::」(コロンを2つ)を使用します…

COMオブジェクトを呼び出す。

MSH

COMオブジェクトの呼び出し COMオブジェクトを呼び出してみます。 MSH C:\> $ws = new-object -com wscript.shell MSH C:\> $ws.popup("Popup Window Test", 10, "Title", 64)ちゃんとポップアップしますね。(画像参照)Beta2でCOMが利用できるようになったと…

MSH Beta2がリリース

MSH

http://oka326.blogspot.com/2005/09/msh-monad-beta-2-released.htmlを見て気付いたのですが、MSH Beta2がリリースされたようです。 x86 x64 Beta1からの変更点 さっそくx86版をダウンロード。リリースノートをざっと見て、Beta1からの大きな変更点は、 COM…

基本構文(11)

MSH

参考:MSH Language and Syntax .NETオブジェクトを作成する .NETオブジェクトを生成するには、おそらく、2通りの方法があります。1つ目は基本構文(10) - PowerShell Memoに書いたように、文字列を.NETオブジェクトにキャストする方法。 こんな感じです…

基本構文(10)

MSH

参考:MSH Language and Syntax MSHの変数型について MSHの変数型は大きく分けて2種類あります。 MSHで定義される固有の型 全ての.NETの型 「MSHで定義される固有の型」には以下があります。 array, bool, byte, char, char[], decimal double, float, int,…

基本構文(9)

MSH

参考:MSH Language and Syntax1行のステートメントで、複数の変数に代入することができます。 複数の変数への同時代入(1) MSH> $a=1,2,3,4,5,6 MSH> $first,$second,$rest = $a MSH> $first 1 MSH> $second 2 MSH> $rest 3 4 5 6 変数をカンマで区切って…

基本構文(8)

MSH

参考:MSH Language and Syntax 文字列と数値が混在した加算結果を代入する際、代入される値の型は「文字列型」か?「数値型」か? 型の自動変換 文字列と数値が混在した加算結果を代入する際、 「右辺の最初の要素」の型が、代入される値の型になります。 M…

「set-variable」の使い方

MSH

パイプでコマンドを繋いだときに「set-variable」は便利です。 特定条件のオブジェクトを変数に設定する MSH> get-process w* | set-variable W_Processes 「get-process」コマンドでWで始まるプロセスを取得し、W_Processes変数に設定します。 MSH> $W_Proc…

基本構文(7)

MSH

参考:MSH Language and Syntax 変数の属性を設定する(定数) 「Set-Variable」コマンドは、変数の属性を設定できます。 今回は、変数を定数に設定してみます。 MSH> Set-Variable a 6 -Option Constant MSH> $a=5 : Cannot overwrite variable a because i…

基本構文(6)

MSH

参考:MSH Language and Syntax 変数の属性を設定する(読取専用) 「Set-Variable」コマンドは、変数の属性を設定できます。 MSH> Set-Variable a 6 -Option ReadOnly MSH> $a=5 : Cannot overwrite variable a because it is read-only. At line:1 char:3 …

COMオブジェクトを生成する

MSH

Web Cast TechNet Webcast: Next Generation Command Line Scripting with Monad (Part 2 of 2) (Level 300)によると、以下のように打てばWScipt.Shellオブジェクトを生成できるようです。 MSH> $ws = new-object -com wscript.shellですが、実際にMSH beta1…

東大大学院でMSHの特別講義

MSH

7月に東大大学院で、MicrosoftのDave Probert氏の特別講義が開かれたそうです。 ※Dave Probert氏は、Windows OSカーネル開発部門の責任者その中で、MSH(Monad Shell)の講義もあったようです。 ※講義資料はダウンロードすることができます。 http://www.i.u-t…

基本構文(5)

MSH

※「k,m,g」はPowerShell 1.0では「kb,mb,gb」に変更されています。参考:MSH Language and Syntax 特殊な意味を持つ単語 MSH> $a = 1k MSH> Write-Host $a 1024 MSH> $a = 1m MSH> Write-Host $a 1048576 MSH> $a = 1g MSH> Write-Host $a 1073741824 「k」…

基本構文(4)

MSH

参考:MSH Language and Syntax キャスト:文字列→数値 MSH> $a = "10" MSH> $a = [int]$a + 6 MSH> $a 16 明示的に文字列を[int]にキャストすると、数値計算ができます。 [int]にキャストしないと文字列連結されます。 キャスト:数値→文字列 MSH> $a = 10 …

基本構文(3)

MSH

しばらくはMSH Language and Syntaxを参考に基本構文の練習です。(^^; 文字列に対する「+」の挙動 MSH> $a = "abc" MSH> $b = "def" MSH> $a + $b abcdef 文字列同士は「+」で連結できます。 Write-Hostは引数の計算はしない MSH> $a = "abc" MSH> $b = "def…

基本構文(2)

MSH

引き続き、MSH Language and Syntaxを参考に基本構文の練習。 再帰代入演算子(1) MSH> $a = 1 MSH> $a += 5 MSH> Write-Host $a 6 MSH> $a *= 3 MSH> Write-Host $a 18 MSH> $a -= 4 MSH> Write-Host $a 14 再帰代入演算子(2) MSH> $a = 15 MSH> $a /= 6 M…