PowerShell Memo

このサイトはPowerShell(MSH/Monad)奮闘記です

管理人「newpops吉岡洋」が
「PowerShell(旧名:MSH/Monad)」の研究結果を日々綴っていきます。

【お知らせ】
この日記からPowerShellのTipsを抽出し「PowerShell FAQ」として整理しました。


2006-09-29

[]PowerShell RC2って日本語版があるのね

RC2から各言語のローカライズ版が提供されているのですね。田辺茂也さんのBlogを読んで知りました。

http://blogs.technet.com/stanabe/archive/2006/09/27/459209.aspx



日本語版RC2をインストール

さっそく日本語版RC2をインストール


手始めに以下を入力。

man Get-Process

すると、

名前
   Get-Process

概要
   ローカル コンピュータで実行されているプロセスを取得します。


構文
   Get-Process [[-name] <string[]>] [<CommonParameters>]

   Get-Process -id <Int32[]> [<CommonParameters>]

   Get-Process -inputObject <Process[]> [<CommonParameters>]


詳細説明
   Get-Process コマンドレットは、各プロセスのプロセス オブジェクト
   を取得します。 パラメータを指定しない場合は、「Get-Prcess *」と
   入力した場合と同様、コンピュータ上のすべてのプロセスが返されます。
   また、特定のプロセスを指定するには、プロセス名または
   プロセス ID (PID) を指定するか、パイプラインを介して Get-Process に
   プロセス オブジェクトを渡します。 
   Get-Process では、既定の方法はプロセス名による方法です。
   Stop-Process では、既定の方法はプロセス ID による方法です。

関連するリンク
   Stop-Process

注釈
   詳細を参照するには、次のように入力してください: "get-help Get-Process -detailed".
   技術情報を参照するには、次のように入力してください: "get-help Get-Process -full".

なんとヘルプが日本語化されているではないですか!Σ(◎口◎;


これでようやく、国内でも利用ユーザが増えそうです。

※付属ドキュメントはまだ英語だったのは残念・・・。(^^;

2006-09-28

[]Windows PowerShell RC2 Now Available

Windows PowerShell RC2がリリースされました。

参考:September | 2006 | PowerShell Team Blog

RC2のインストール

  1. Windows XP 用 Windows PowerShell 1.0 RC2 更新プログラム パッケージ (ローカライズ版)ダウンロード
  2. PowerShell RC1をアンインストール
  3. PowerShell RC2をインストール
インストールディレクトリ

今回からインストールディレクトリが以下に変更(固定)になっています。


アイコンと背景色

アイコンと背景色も変更されています。

  • アイコンが「>」に変更
  • 背景色がDarkMagentaに変更
機能的な変更

後日、紹介します。

2006-09-27

[][]PowerShell from IronPython Part 2

PowerShell from IronPython - PowerShell Memoの続き。

今回はサンプルの使い方です。

STEP1:サンプルのダウンロード

上記ファイルを任意のディレクトリ解凍します。

「IPPowerShell」がサンプルを含んだディレクトリです。今回は「C:\IPPowerShell」に解凍しました。

STEP2:powershell.pyを読み込む

コマンドプロンプトで「C:\IPPowerShell」をオープン。以下を実行して「powershell.py」を読み込みます。

C:\IPPowerShell>ipy.exe -i powershell.py
Run 'dir(shell)' to get a list of available PowerShell commands!
In general, IronPython PowerShell commands are accessed using the form:
    shell.get_process("cmd").select(First=2)

ここまでで、PowerShellを利用する準備は整いました。

STEP3:PowerShellを利用する

Cmdletを実行するには「shell.」に続けてCmdletを記述します。

ただし、NounとVerbの間の「-(ハイフン)」は「_(アンダーバー)」に置き換える必要があります。


以下にサンプルを示します。

STEP4-1:Cmdletの利用

「Get-Process」を実行する
>>> shell.get_process()
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    100       5     1280       3640    35     0.03   2836 alg
    208      11    15304       2348   106     5.59   3088 B2
    773      47    27912      42560   154    39.33   1580 CCAPP
(中略)

STEP4-2:Cmdlet(引数付き)の利用

「Get-Process ipy」を実行する

引数を渡す場合は、以下のよう記述します。

>>> shell.get_process("ipy")
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    422      14    40016      40152   183     4.42    748 ipy

STEP4-3:Cmdlet(キーワードパラメータ付き)の利用

「Get-Date -DisplayHint date」を実行する

キーワードパラメータを渡す場合は、以下のよう記述します。

>>> shell.get_date(DisplayHint='date')
2006年9月27日

STEP4-4:パイプの利用

「Get-Process ipy | ConvertTo-Html」を実行する

パイプを利用する場合は「.(ドット)」で区切ってコマンドを続けて記述します。

>>> shell.get_process("ipy").convertto_html()
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"  "http://www.w3.org/TR/html4/s
(中略)

STEP4-5:配列の要素へのアクセス

「Get-Process ipy | Select-Object -First 1 -Property WS」を実行する

「ipy」プロセスを取得。パイプを通して1つ目のオブジェクトの「WS」プロパティを表示するコマンドです。

IronPython上で実行するには、「[](配列)」を利用します。

>>> shell.get_process("ipy")[0].WS
41107456

2006-09-26

[]PowerShellの勧め

PowerShellをこれから始める方に

構造計画研究所の斉藤努さんによる「PowerShellの勧め」というパワーポイント資料を発見。

http://plaza.harmonix.ne.jp/~fakira/turedure/cprog_06.htm#060915

#参考サイトの一覧に、当サイトも載っていました。

内容をまとめると・・・

PowerShellをこれから始める方には参考になるでしょう。

2006-09-22

[][]VB.NETからPowerShellを利用する

VB.NETからPowerShellを利用するには?(peerさんからの質問です)

今回は、PowerShellのコマンドもしくはスクリプトを記述した文字列を、

VB.NETで実行・評価する方法を紹介します。

利用手順

System.Management.Automation.dllを参照に追加する

デフォルトでは「C:\Program Files\Windows PowerShell\v1.0」あります。

必要な名前空間インポート
Imports System.Management.Automation
Imports System.Management.Automation.Runspaces
RunspaceInvokeオブジェクトを生成する
Dim runspaceInvoke As RunspaceInvoke = New RunspaceInvoke()
invokeメソッドで、スクリプト文字列を実行・評価する
Dim result As Object = _
 runspaceInvoke.Invoke("get-process | ?{$_.name -like ""win*""}")
結果を確認する

以下は実行結果となるPSObjectオブジェクトのメンバを確認しています。

For Each member As PSMemberInfo In result(0).Members()
    Debug.Print(member.Name & ":" & member.Value.ToString())
Next

出力結果は以下のようになります。

__NounName:Process
Name:winlogon
Handles:479
VM:64794624
WS:5132288
PM:8908800
NPM:54656
・
・
・

※途中、特定のプロパティ解析時、エラー(NullReferenceException)が出ます。

 printする前に、存在チェックが必要ですね。(^^;


上記サンプルのソース

Dim runspaceInvoke As RunspaceInvoke = New RunspaceInvoke()
Dim result As Object = _
    runspaceInvoke.Invoke("get-process | ?{$_.name -like ""win*""}")

For Each member As PSMemberInfo In result(0).Members()
    If IsNothing(member) = True Then Continue For
    Debug.Print(member.Name & ":" & member.Value.ToString())
Next

VSでWindowsアプリケーションを選び、フォームにボタンを配置。

ボタンのClickイベントに書いたコードです。

ソースの先頭でImportsを忘れずに・・・。

Imports System.Management.Automation

Imports System.Management.Automation.Runspaces

2006-09-18

[][]PowerShell from IronPython

IronPythonからPowerShellを利用する

IronPythonからPowerShellを利用するサンプルが公開されました。


特徴

概要
  • IronPythonからPowerShellのCmdlet、Aliasを利用することが可能
  • サンプルに含まれるpowershell.pyが、PowerShellをIronPythonから呼び出せるようにラップするライブラリ
  • IronPython上で「from powershell import *」と記述すれば利用可能になる
  • PowerShellパイプ処理も利用可能
利用可能な機能
  • Cmdlet
    • Get-Commandで表示されるもののみ利用可能
  • Alias
    • 内部定義されるもののみ利用可能(profile.ps1で定義したものは利用不可)

利用方法はこちら。

PowerShell from IronPython Part 2 - PowerShell Memo