Slide 1

Slide 1 text

こんなこともできる Windows PowerShell (株) オンターゲット 柳田 岳洋 @tyanagida LL好きにおすすめ * 当ファイルではコード部分に、Inconsolataというフォントを使っています。インストールされて いないPCでは、表示がずれることがあります。

Slide 2

Slide 2 text

こんな人が…

Slide 3

Slide 3 text

こんな人が… • Perlは4.019の頃から使っている • Linuxは0.99の頃から使っている • コマンドラインに直接 for とか書く • 作業用に、細かいスクリプトをよく作る

Slide 4

Slide 4 text

Windows経験はこれだけ

Slide 5

Slide 5 text

Windows経験はこれだけ • Windowsプログラミングは、仕事でWindows CEを触ったことがある気がする程度

Slide 6

Slide 6 text

Windows経験はこれだけ • Windowsプログラミングは、仕事でWindows CEを触ったことがある気がする程度 何を作ったかも 思い出せない…

Slide 7

Slide 7 text

Windows経験はこれだけ • Windowsプログラミングは、仕事でWindows CEを触ったことがある気がする程度 何を作ったかも 思い出せない… Windowsよく分からない

Slide 8

Slide 8 text

PowerShellで作った http://mailtester.ontarget.cc/app/

Slide 9

Slide 9 text

PowerShellで作った http://mailtester.ontarget.cc/app/ 実際にOutlookで表示して、 PowerShellで自動キャプチャしてます

Slide 10

Slide 10 text

PowerShellで作った http://mailtester.ontarget.cc/app/ 実際にOutlookで表示して、 PowerShellで自動キャプチャしてます PowerShell、 便利じゃん!!

Slide 11

Slide 11 text

PowerShellで作った http://mailtester.ontarget.cc/app/ 実際にOutlookで表示して、 PowerShellで自動キャプチャしてます PowerShell、 便利じゃん!! メールテスター 検索

Slide 12

Slide 12 text

PowerShellの概要  

Slide 13

Slide 13 text

PowerShellの概要 •Windows7以降は標準搭載(Homeでも)  

Slide 14

Slide 14 text

PowerShellの概要 •Windows7以降は標準搭載(Homeでも) •コマンドラインの他、IDEも標準搭載(ISEと呼ぶ) ブレークポイント設定、ステップ実行etc. 

Slide 15

Slide 15 text

PowerShellの概要 •Windows7以降は標準搭載(Homeでも) •コマンドラインの他、IDEも標準搭載(ISEと呼ぶ) ブレークポイント設定、ステップ実行etc. •パイプが使える 記号も | でUNIXと一緒!!

Slide 16

Slide 16 text

PowerShellの概要 

Slide 17

Slide 17 text

PowerShellの概要 •Windowsの膨大な既存ライブラリを使える 例: .NET Framework Class Library http://msdn.microsoft.com/en-us/library/gg145045.aspx

Slide 18

Slide 18 text

PowerShellの概要 •Windowsの膨大な既存ライブラリを使える 例: .NET Framework Class Library http://msdn.microsoft.com/en-us/library/gg145045.aspx C#のインタプリタ版

Slide 19

Slide 19 text

パイプを通るのはオブジェクト

Slide 20

Slide 20 text

パイプを通るのはオブジェクト PS> ls | sort

Slide 21

Slide 21 text

パイプを通るのはオブジェクト 実行結果のオブジェクトが 通ってます PS> ls | sort

Slide 22

Slide 22 text

PS> ls PS> ls | sort PS> ls | sort –Property Length PS> $res = ls; $res.GetType() PS> $res[0].GetType() PS> $res[0] | Get-Member PS> $res[0].GetFiles() PS> $res[0].CreationTime 実際にISEで試してみる

Slide 23

Slide 23 text

PowerShell入門

Slide 24

Slide 24 text

あとはhelpコマンドを知っていればとりあえずOK (例: help get-member) PowerShell入門

Slide 25

Slide 25 text

できること(1):アプリの操作 • Outlookの例 PS> $ol = New-Object -ComObject Outlook.Application PS> $ol.Session.Folders[1].Name PS> $ie = New-Object -ComObject InternetExplorer.Application PS> $ie.Visible = $true PS> $ie.Navigate(“http://www.yahoo.co.jp/”) • InternetExplorerの例

Slide 26

Slide 26 text

  できること(1)のMS的表現

Slide 27

Slide 27 text

•COMインタフェースを自由に操作できる Outlook, ExcelなどもOK  できること(1)のMS的表現

Slide 28

Slide 28 text

•COMインタフェースを自由に操作できる Outlook, ExcelなどもOK •各アプリのCOMインタフェースのドキュメントは MSDNに大抵あります Outlookの場合: “Outlook2010 Object Model Reference” できること(1)のMS的表現 http://msdn.microsoft.com/en-us/library/ff866465%28v=office.14%29.aspx

Slide 29

Slide 29 text

できること(2):画面キャプチャ Add-Type -AssemblyName System.Drawing function screenshot([Drawing.Rectangle]$bounds, $path) { $bmp = New-Object Drawing.Bitmap -ArgumentList $bounds.width,$bounds.height $graphics = [Drawing.Graphics]::FromImage($bmp) $graphics.CopyFromScreen($bounds.Location, [Drawing.Point]::Empty, $bounds.size) $bmp.Save($path) $graphics.Dispose() $bmp.Dispose() } PS> $rect = New-Object Drawing.Rectangle –ArgumentList 100,100,400,300 PS> Screenshot $rect tmp.png

Slide 30

Slide 30 text

できること(2)のMS的表現

Slide 31

Slide 31 text

できること(2)のMS的表現 • .NET Frameworkクラスライブラリを自由に使える  System.Drawingの例 http://msdn.microsoft.com/en-us/library/system.drawing.aspx

Slide 32

Slide 32 text

できること(3):Windowの操作 function Set-ForegroundWindow($hwnd) { $sig = @' [DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")] public static extern bool SetForegroundWindow(IntPtr hWnd); '@ Add-Type -MemberDefinition $sig -name NativeMethods -namespace Win32 [Win32.NativeMethods]::SetForegroundWindow($hwnd) } PS> Set-ForegroundWindow (Get-Process Outlook).MainWindowHandle

Slide 33

Slide 33 text

できること(3)のMS的表現

Slide 34

Slide 34 text

できること(3)のMS的表現 • C#をインラインで書ける • つまりWin32 APIを自由に呼べる

Slide 35

Slide 35 text

マニュアル多すぎない?   

Slide 36

Slide 36 text

マニュアル多すぎない? •実際には、マニュアルは後から読みました   

Slide 37

Slide 37 text

マニュアル多すぎない? •実際には、マニュアルは後から読みました やりたいことをWebで検索  

Slide 38

Slide 38 text

マニュアル多すぎない? •実際には、マニュアルは後から読みました やりたいことをWebで検索 Stack Overflowあたりでコードを見つける 

Slide 39

Slide 39 text

マニュアル多すぎない? •実際には、マニュアルは後から読みました やりたいことをWebで検索 Stack Overflowあたりでコードを見つける 見つけた答えを解読する

Slide 40

Slide 40 text

マニュアル多すぎない? •実際には、マニュアルは後から読みました やりたいことをWebで検索 Stack Overflowあたりでコードを見つける 見つけた答えを解読する 割と簡単!!

Slide 41

Slide 41 text

参考文献(1): 軽く試す人用 

Slide 42

Slide 42 text

参考文献(1): 軽く試す人用 •「使う気が無い人向けのPowerShell入門」 

Slide 43

Slide 43 text

参考文献(1): 軽く試す人用 •「使う気が無い人向けのPowerShell入門」 awkとの比較でPowerShellを紹介している

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

(引用) このシリーズは、PowerShellの面白さを、実際に触る気が無い Unix系のスペシャリストに対して伝える事を目的にしています。 http://karino2.livejournal.com/69885.html

Slide 46

Slide 46 text

参考文献(2): 使う人用

Slide 47

Slide 47 text

参考文献(2): 使う人用 • PowerShell in Action (2nd. Ed.)  演算子、制御フローから  COM操作、.NET Framework活用まで  和訳は1st. Editionのみ  英語版はePub, PDFもあり http://www.manning.com/payette2/

Slide 48

Slide 48 text

参考文献(2): 使う人用 • PowerShell in Action (2nd. Ed.)  演算子、制御フローから  COM操作、.NET Framework活用まで  和訳は1st. Editionのみ  英語版はePub, PDFもあり http://www.manning.com/payette2/ PowerShellの作者の本

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

One of the earliest successful scripting environments was something called Tool Command Language/Tool Kit (TCL/TK). PowerShell in Action 2nd. (p.743) (和訳) 最初期に成功したスクリプト言語環境の1つは、Tcl/Tkと呼ばれ るものだった。

Slide 51

Slide 51 text

One of the earliest successful scripting environments was something called Tool Command Language/Tool Kit (TCL/TK). PowerShell in Action 2nd. (p.743) (和訳) 最初期に成功したスクリプト言語環境の1つは、Tcl/Tkと呼ばれ るものだった。 友達になれそう!!

Slide 52

Slide 52 text

終わりに

Slide 53

Slide 53 text

終わりに •PowerShell、LL好きに結構おすすめです

Slide 54

Slide 54 text

終わりに •PowerShell、LL好きに結構おすすめです •“メールテスター”もよろしく!!

Slide 55

Slide 55 text

終わりに •PowerShell、LL好きに結構おすすめです •“メールテスター”もよろしく!! メールテスター 検索