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

TechEd2005資料

MSH

Monadのサンプルが多数 ふとGoogleで検索していたら、http://www.wintecnologia.com.br/wintecnologia/downloads.htmにTechEd2005で利用されたらしいMonadの資料が置いてありました。 Monadのサンプルが多数載っています。 TechNet Webcastの資料と内容はほ…

「more」コマンドを作成する

MSH

「out-host」Cmdletを利用してUNIXシェルの「more」相当の処理を作成してみます。 「more」の挙動 「more」コマンドは以下の2系統の情報をページング表示します。 パイプで渡した情報 引数として渡したファイルの内容 パイプで渡した情報のページング表示(U…

1ページずつ表示する(out-host)

MSH

ウィンドウ1ページに収まらない情報をコンソールに出力する場合、 「man」や「help」のように、情報を1ページずつ表示できると便利です。 UNIXシェルでいう「more」ですね。 パイプで渡された情報を1ページずつ表示する 「man」や「help」の内部で利用さ…

「man」「help」はどこで定義されている?

MSH

「man」「help」はCmdletの使い方を1ページずつ出力してくれますが、 この2つのコマンドはどこで定義されているのでしょうか? 「man」「help」の実行例 「get-process」の使い方を調べる MSH C:\> man get-process NAME get-process SYNOPSIS Gets a list…

入力を2箇所に出力する(tee-object)

MSH

「tee-object」はUNIXシェルの「tee」に相当します。 「tee-object」:コンソール+ファイルに出力 fileオプションで出力するファイルを指定します。 プロセス一覧をコンソールとファイルに出力する MSH C:\> get-process | tee-object -file proc.txt Handl…

パスの解析(resolve-path)(1)

MSH

「resolve-path」:ワイルドカードを含むパスの解析 「resolve-path」はワイルドカードを含むパスを解析し、 条件に当てはまるパスを「System.Management.Automation.PathInfo」の配列として返します。 「PathInfo」は、「Drive」「Path」プロパティで、ドラ…

パスの解析(parse-path)(2)

MSH

「parse-path」でレジストリのパスを解析してみます。 「parse-path」:ファイルパスの解析 親キー取得 MSH C:\> parse-path HKLM:\SOFTWARE\Microsoft -parent HKLM:\SOFTWARE ルートキーの取得 MSH C:\> parse-path HKLM:\SOFTWARE\Microsoft -qualifier H…

パスの解析(parse-path)(1)

MSH

※「parse-path」はPowerShell 1.0では「Split-Path」という名前に変更されています。 「parse-path」はパスの解析を行うCmdletです。 パスは、ファイル/レジストリの両方に対応可能です。 「parse-path」:ファイルパスの解析 親フォルダの取得 MSH C:\> pa…

COMスクリプティングが貧弱

MSH

「ExcelファイルをHTMLファイルにコンバートするスクリプト」を作成しようと試みましたが、 Excelファイルのオープンに失敗してうまくいきません。 ExcelオブジェクトのWorkBooksプロパティを取得してもNullになってしまいます。 理由は、http://oka326.blog…

「foreach-object」の使い方

MSH

「foreach-object」はエイリアスの「foreach」として使われる事が多いですね。以下の構文で利用します。 foreach-object {前処理} {ループ処理} {後処理} foreach-object {ループ処理} それぞれのサンプルは以下です。 カレントディレクトリのファイル/フォ…

オブジェクトのフィルタリング(select-object)

MSH

「select-object」は以下の方法でオブジェクトのフィルタリングを行います。 指定プロパティでフィルタリング 先頭or末端から指定数をフィルタリング 「select-object」:指定プロパティでフィルタリング プロセスの「Id」「ProcessName」プロパティのみ表示…

オブジェクトのグループ化(group-object)

MSH

「group-object」は複数のオブジェクトに対して、プロパティ名でグルーピングを行います。 「group-object」 ファイルを拡張子でグルーピング MSH C:\..\Orca> get-childitem | group-object {$_.extension} Count Name Group ----- ---- ----- 4 .cub {dari…

ファイル/ディレクトリの作成

MSH

レジストリアクセス(2) - PowerShell Memoでは「new-item」を利用してレジストリキーを作成するサンプルを紹介しました。 「new-item」はファイル/ディレクトリの作成も可能です。 ディレクトリの作成(存在しないディレクトリは再帰的に作成) MSH C:\> $pa…

特殊変数(2)

MSH

以下のページで特殊変数について詳しく書かれています。 Special Variables 「$args」 「$args」はfunctionやScriptBlockの引数配列を格納します。 ScriptBlockの引数を表示する MSH C:\> $a = {write-host $args[0] $args[1]} MSH C:\> &$a 1 2 3 4 1 2 「$…

レジストリキーの存在チェック〜test-path〜

MSH

レジストリアクセス(2) - PowerShell Memoでレジストリキーの存在チェックのサンプルを紹介しましたが、 「test-path」というCmdletが同様の機能を持っていました。(^^; フォルダ/ファイル/レジストリキーの存在チェック 「test-path」は以下の3つの存在…

レジストリアクセス(3)

MSH

前回、「set-item」によるレジストリアクセスを書きましたが、 色々調べてみると、「set-property」の方が対応範囲が広く便利だと分かりました。レジストリの値には「文字列」「バイナリ」「DWORD」の3種類がありますが、「set-property」では3種類とも対…

レジストリアクセス(2)

MSH

キーを作成する キーを作成する前にキーが存在するかチェック。 以下のfunctionで可能です。 キーの存在チェック function existKey() { PARAM ([String]$key) $item = ls $key -ea silentlycontinue if ($item) { $result = $True } else { $result = $Fals…

レジストリアクセス(1)

MSH

レジストリの扱い MSHではレジストリは通常のフォルダ/ファイルと同様の扱いです。 ドライブ一覧取得 MSH C:\> get-drive Name Provider Root ---- -------- ---- A FileSystem A:\ Alias Alias C FileSystem C:\ cert Certificate \ D FileSystem D:\ E Fi…

情報整理が必要・・・

ある程度、文法やサンプルが書き溜まってきましたが、 カテゴリーの付け方が悪くて、検索性が良くない。(ーー;恥ずかしながら、私自身が、あのサンプルどこで書いたっけ・・・と探してます。(笑) この日記のサンプルなどをWikiなどで整理する必要がありそう…

オブジェクト配列をソートする

MSH

オブジェクト配列のソートには「Sort-Object」というCmdletを使います。 「Sort-Object」 普通に使うとファイル名の昇順ソートになります。 ファイル名の昇順ソート MSH C:\> get-childitem | sort-object Directory: FileSystem::C:\ Mode LastWriteTime Le…

文字列操作(2)

MSH

文字列操作色々〜その2〜 String型のメソッド一覧を出力 [String].GetMembers() | foreach{"$_"} 文字列の結合 MSH C:\> [String]::join(":",@("Microsoft","Command","Shell")) Microsoft:Command:Shell 指定文字列で始まるかチェック MSH C:\> $a = "abcd…

.NET Classのブラウザ

MSH

「Reflector for .NET」は.NET Classをビジュアルに表示するブラウザです。 アセンブリ毎に、クラス/リソース/プロパティ/メソッドの情報が、 分かりやすく階層表示されます。 これは便利ですね。 HP:http://www.aisto.com/roeder/dotnet/ Download:htt…

文字列操作(1)

MSH

文字列操作色々 型は「System.String」 MSH C:\> "newpops".GetType().fullname System.String 文字列長は「Length」で取得 MSH C:\> "newpops".Length 7 1文字ずつ配列になっています MSH C:\> "newpops"[0] n MSH C:\> "newpops"[1] e 大文字小文字変換 MS…

メソッド検索

MSH

MSDNを見なくても、メソッド検索・・・。 利用可能なメソッドを検索する 指定文字列と同一のメソッドを検索する(大文字小文字区別なし) $method = "display" [AppDomain]::CurrentDomain.GetAssemblies() | foreach{ $_.GetTypes() | foreach{ $_.GetMethods…

「Monad scriptomatic」が公開されています

MSH

Monad scriptomatic 「MVP for SQL Server」の米田さんのBlogで発見。 「Monad scriptomatic」が公開されています。(Download) 「Scriptomatic 2.0」はWMI使いにはお馴染みだと思いますが、 WMIで各種Classにアクセスするサンプルスクリプト(VBScript)を生成…

Windows "Monad" Shell Beta 2 Documentation Pack release

MSH

MSH/Monadのドキュメントパックが公開されました。Download:Microsoft Download Center: Windows, Office, Xbox & More Overview(Downloadページより転載) The documents included are: The "Getting Started" guide, an 80-page introduction to using the…

特殊変数(1)

MSH

以下のページで特殊変数について詳しく書かれています。 Special Variables 「$true」「$false」「$null」 最も基本的な特殊変数は「$true」「$false」「$null」の3つです。 それぞれ、 Boolean TRUE Boolean FALSE A null object を表します。 「$_」 「$_…

正規表現(後方参照)

MSH

正規表現で後方参照を利用する方法。 後方参照のやり方 例えば、正規表現内で以下のような記述をすると、 (?【正規表現】) 【正規表現】でHitした部分文字列は、 $matches.name に格納されます。 例を出しましょう。 後方参照サンプル MSH C:\> $MshHome C:\…

基本構文(14)

MSH

今さらという感じもしますが、条件分岐文の書き方です。 if文 $a = 10 if ($a -eq 10) { write-host True } else { write-host False } switch文 $a = 2 switch($a) { 1 {"one"; break} 2 {"two"; break} 3 {"three"; break} } switch文(正規表現) ルートデ…

プログレスバー表示

MSH

MSHで処理の進捗表示を行う場合、「write-progres」が便利です。 Progress表示 10ミリ秒毎に処理が1%進むサンプル for($i = 1; $i -le 100; $i++ ) { write-progress "○○プログラム" "進捗" 1 $i start-sleep -m 10 }start-sleepは秒単位/ミリ秒単位で処理…